서비스 기획자 기록

[백준] 3052번 : 나머지 - Java 본문

백준

[백준] 3052번 : 나머지 - Java

주니5947 2025. 1. 7. 21:51

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


  • 문제


  • 풀이

- 배열 arr에 입력받은 숫자를 42로 나눠 차례대로 삽입한다. 그리고 for문으로 값들을 모두 차례로 비교하며 같은 것들을 찾는다. 다른 숫자가 10개인데 여기서 같은 숫자의 개수를 빼면 다른 숫자가 몇개인지 구할 수 있다.

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int arr[] = new int[10];
		int count = 0;
		
		for (int i = 0; i < 10; i++) {
			arr[i] = sc.nextInt()%42;
		}
		
		for (int i = 0; i < 9; i++) {
			for (int j = i+1; j < 10; j++) {
				if (arr[i] == arr[j]) {
					count++;
					break;
				}
			}
		}
		
		System.out.println(10-count);
		
		sc.close();
	}
}

 

첫번째 for문은 비교되는 숫자를 결정하고 두번째 for문은 비교할 숫자를 결정한다.

arr[0]과 arr[1] / arr[0]과 arr[2]...이런식으로 한 칸씩 뒤로 가며 숫자를 비교하는데 

같은 숫자가 나오면 count를 증가시키고 바로 반복을 중단하고 비교되는 숫자를 다음 숫자로 넘어간다.

같은 숫자가 뒤로 여러번 나오면 다음 숫자를 비교할 때 중복돼서 세어지므로 이를 방지하기 위함이다. 

조합에서 경우의 수를 구할 때를 생각하면 된다.

이후 10에서 count를 뺀 값을 출력하면 된다.