링크 : https://www.acmicpc.net/problem/3052
3052번: 나머지
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
www.acmicpc.net
[Backjoon - 3052] [Java] 나머지
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] count_arr = new int[42];
int temp;
int result = 0;
for(int i=0; i<10; i++) {
temp = Integer.parseInt(br.readLine());
count_arr[temp%42]++;
}
for(int i=0;i<count_arr.length;i++) {
if (count_arr[i] != 0) {
result++;
}
}
System.out.println(result);
}
}
10개의 수를 입력받아서
각 수를 42로 나누었을 때의 나머지 값이 각각 나옵니다.
이 때, 서로 다른 나머지 값이 몇 개가 출력되는가를 구하는 문제로,
위 문제의 핵심은 이 부분입니다.
for(int i=0; i<10; i++) {
temp = Integer.parseInt(br.readLine());
count_arr[temp%42]++;
}
...
for(int i=0;i<count_arr.length;i++) {
if (count_arr[i] != 0) {
result++;
}
}
count_arr을 사용하여
입력받은 수를 42로 나누었을 때 나머지를 인덱스로 하는 배열 내 데이터에 ++ 연산을 합니다.
만약 43이라는 값과 85라는 값을 입력받았다고 해 봅시다.
두 수는 42로 나눈 나머지가 모두 1이므로
같은 입력케이스로 처리해야만 합니다.
위 코드에 의하면
43이라는 입력을 받았을 때
count_arr[1] ++이 실행되고
85라는 입력을 받았을 때도
count_arr[1] ++이 실행됩니다.
이런 방식으로,
count_arr을 이용하여
입력받은 수의 나머지를 인덱스로 하는 배열 내 데이터에 ++연산을 해 주고,
최종 단계에서
count_arr내 데이터에서 0이 아닌 정수의 개수를 구하면 됩니다.