백준-단계별로 풀어보기/4-1차원 배열
백준 3052 - 나머지
코딩크리처
2024. 9. 5. 03:28
문제 제목 : 나머지
문제
두 자연수 A
와 B
가 있을 때, A % B
는 A
를 B
로 나눈 나머지이다.
예를 들어, 7, 14, 27, 38을 3
으로 나눈 나머지는 1, 2, 0, 2 이다.
수 10 개를 입력받은 뒤, 이를 42
로 나눈 나머지를 구한다.
그 다음, 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫 번째 줄 부터 열 번째 줄 까지 숫자가 한 줄에 하나씩 주어진다.
이 숫자는 1_000
보다 작거나 같고, 음이 아닌 정수이다.
출력
첫째 줄에, 42
로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
예제 입력 1
1
2
3
4
5
6
7
8
9
10
예제 출력 1
10
예제 입력 2
42
84
252
420
840
126
42
84
420
126
예제 출력 2
1
예제 입력 3
39
40
41
42
43
44
82
83
84
85
예제 출력 3
6
두 자연수 A 와 B 가 있을 때, A % B 는 A 를 B 로 나눈 나머지이다.
이 문장에서 볼 수 있듯, 입력될 자연수 A
는 결국 A % B
의 입력과 동일하다는 암시이다.
수 10 개를 입력받은 뒤, 이를 42 로 나눈 나머지를 구한다.
정해진 입력 루프 10 개를 반복하게 되며,
확인할 수는 42
이하로 제한된다.
먼저, 확인할 수는 42
이하로 제한된다는 문구에서,
우리가 만들 배열의 수는 정해졌다. 즉, 42 길이의 배열을 만들면 된다는 것이다.
그렇다면, 어떤 타입의 배열 을 만들면 될까?
같은 값의 입력이 주어질 수도 있으며, 모두 다른 값의 입력 이 주어질 수도 있다.
이러한 상황에서, 우리는 2 가지 갈래 로 나눌 수 있다.
- int 유형의 배열을 만든다.
- boolean 유형의 배열을 만든다.
int
나, boolean
유형으로 배열을 만들던, 길이는 42
가 된다.
하지만, int
, boolean
형식으로 선언했을 때,
서로 다른 숫자의 개수를 세는 방식은 다르다.
이를 살펴보자
int 유형의 배열
42
로 나누고 남은 숫자의 인덱스에+1
처리를 해 준다.42
길이의 배열을 순회하며, 0 이 아닌 개수를 세 준다.- 출력
boolean 유형의 배열
42
로 나누고 남은 숫자의 인덱스에true
처리를 해 준다.42
길이의 배열을 순회하며,false
가 아닌 개수를 세 준다.- 출력
Answer1 - int 유형의 배열을 만든다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[42];
for(int i = 0; i < 10; i++) {
int tempResult = Integer.parseInt(br.readLine()) % 42;
arr[tempResult]++;
}
int count = 0;
for(int i = 0; i < arr.length; i++)
if(arr[i] != 0)
count++;
System.out.println(count);
}
}
Answer2 - boolean 유형의 배열을 만든다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean[] arr = new boolean[42];
for(int i = 0; i < 10; i++) {
int tempResult = Integer.parseInt(br.readLine()) % 42;
arr[tempResult] = true;
}
int count = 0;
for(int i = 0; i < arr.length; i++)
if(arr[i] == true)
count++;
System.out.println(count);
}
}