이 문제의 핵심은 '42로 나눈 10개의 나머지들을 어떻게 비교할 것 인가'이다.
이런 경우 경우의 수를 배열에 모두 담고 나올때마다 카운팅을 하는 것을 나는 주로 사용한다.
즉, 어떤 수를 42로 나눌 경우 나올 수 있는 나머지는 0~41 이다 그러므로 배열 42개의 크기 만큼 만들어 나머지가 나올 때마다 해당 자리에 카운팅을 해주는 것이다.
아래 내가 작성한 코드와 주석을 보면 바로 이해할 수 있을 것이다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[] arr = new int[42]; //42로 나눴을 때 나머지는 42보다 작을 수 밖에 없으므로 0~41까지 배열을 할당하고 나머지가 발생하면 해당 자리 숫자에 카운트
for(int i=0; i<arr.length; i++) { // 배열 0으로 초기화
arr[i]=0;
}
for(int i=0; i<10; i++) {
int num = Integer.parseInt(br.readLine());
int remainder = num%42; // 42로 나눴을때 나머지를 받는 변수
arr[remainder]++; //나머지가 발생하여 해당 자리 1증가
}
int count = 0;
for(int i=0; i<arr.length; i++) { // 서로 다른 나머지 값을 카운팅
if(arr[i]!=0) {
count++;
}
}
bw.write(count + "\n"); // 출력
bw.flush();
}
}
반응형
'백준' 카테고리의 다른 글
[자바] 백준 - 2675번(문자열 반복) (0) | 2021.04.05 |
---|---|
[자바] 백준 - 1152번(단어의 개수) (0) | 2021.04.05 |
[자바] 백준 - 11720번 (숫자의 합) (0) | 2021.04.05 |
[자바] 백준 - 1065번(한수) (0) | 2021.04.05 |
[JAVA] 백준 - 2751번(수 정렬하기2) (1) | 2021.04.03 |