[JAVA/백준] 1차원 배열: 나머지

👀 문제

https://www.acmicpc.net/problem/3052

👊 도전

1. 설계

  1. 숫자를 42로 나눈 나머지는 0~41 중 하나의 값을 가지므로 길이가 42인 배열을 선언하여 나머지를 구할 때 마다 해당 인덱스를 ++하여 갯수를 센다.
  2. 마지막으로 배열을 순회하며 해당 인덱스 값이 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. 설명

  1. 배열을 이용하여 나머지의 갯수를 센다.
    • 배열의 인덱스를 나머지라고 생각하고 해당 값을 증가시킨다.
    • 10개의 숫자 계산이 끝나면, 배열에 0이 아닌 값들은 최소 한 번씩은 발생한 나머지라는 뜻이다.
    • 따라서 배열값이 0이 아닌 갯수를 세서 출력하면 서로 다른 나머지 값이 몇 개 있는지 알 수 있다.

👏 해결 완료!