👀 문제
https://www.acmicpc.net/problem/3052
👊 도전
1. 설계
- 숫자를 42로 나눈 나머지는 0~41 중 하나의 값을 가지므로 길이가 42인 배열을 선언하여 나머지를 구할 때 마다 해당 인덱스를 ++하여 갯수를 센다.
- 마지막으로 배열을 순회하며 해당 인덱스 값이 0이 아닌 갯수를 세어 출력한다.
2. 구현 (성공 코드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.Scanner;
/**
*
* @author HEESOO
*
*/
public class Main {
public static void main(String[] args) {
int[] remainder=new int[42];
Scanner input=new Scanner(System.in);
int num, remain, answer=0;
for(int i=0;i<10;i++){
num=input.nextInt();
remain=num%42;
remainder[remain]++;
}
for(int i=0;i<42;i++){
if(remainder[i]!=0) answer++;
}
System.out.println(answer);
}
}
3. 결과
🤟 성공 🤟
4. 설명
- 배열을 이용하여 나머지의 갯수를 센다.
- 배열의 인덱스를 나머지라고 생각하고 해당 값을 증가시킨다.
- 10개의 숫자 계산이 끝나면, 배열에 0이 아닌 값들은 최소 한 번씩은 발생한 나머지라는 뜻이다.
- 따라서 배열값이 0이 아닌 갯수를 세서 출력하면 서로 다른 나머지 값이 몇 개 있는지 알 수 있다.