본문 바로가기

백준 문제 풀기/Array

백준 Array문 단계별 풀기 - 3052번

실패 결과

 

답은 같으나 

문제푸는 방식이 잘못 된듯 싶다

import java.util.Scanner;

public class Main4 {
//	두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 
//
//	수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
//
//	입력
//	첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
//
//	출력
//	첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
//
//	예제 입력 1 
//	39
//	40
//	41
//	42
//	43
//	44
//	82
//	83
//	84
//	85
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int num[] = new int[10];
		int anotherNum[] = new int[10];
		for (int i = 0; i < 10; i++) {
			num[i] = scanner.nextInt();
			anotherNum[i] = num[i] % 42;
		}
		int count = 0;
		for (int i = 0; i < anotherNum.length - 1; i++) {
			for (int j =i + 1; j < anotherNum.length; j++) {
				if(anotherNum[i] == anotherNum[j]) {
					count++;
				}
			}
			
		}
		System.out.println(anotherNum.length - count);
	}
	
	
}

 

그래서 새로 접근을 시도했다

HashSet을 사용해서 중복을 제거하는 방식으로 접근하기로했다.

hash의 사이즈를 출력하기로 하였다.

import java.util.HashSet;
import java.util.Scanner;

public class Main4 {
//	두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 
//
//	수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
//
//	입력
//	첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
//
//	출력
//	첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
//
//	예제 입력 1 
//	39
//	40
//	41
//	42
//	43
//	44
//	82
//	83
//	84
//	85
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		HashSet<Integer> hashSet = new HashSet<Integer>();
		int num[] = new int[10];
		
		for (int i = 0; i < num.length; i++) {
			num[i] = scanner.nextInt() % 42;
 		}
		for (int i = 0; i < num.length; i++) {
			hashSet.add(num[i]);
		}
		
		System.out.println(hashSet.size());
		
	}	
}