문제풀이

[JAVA] 백준 3052번 나머지 : 중복값 제거

IT록흐 2021. 7. 10. 16:34
반응형
 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

 

 

1. 문제 추상화

 

1차 추상화

10개의 입력 받은 수를 42로 나누었을 때 나오는 서로 다른 나머지가 몇 개 있는지 출력하시오.

 

2차 추상화

10개의 나머지 중 중복을 제거하여 서로 다른 나머지 개수를 구하시오

 

2. 알고리즘 

 

HashSet 자료구조를 활용하여 중복제거하기

 

3. 풀이

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashSet;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		//  HashSet은 내부에서 중복값을 제거함. 그러므로 HashSet을 이용하여 중복제거 가능
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		HashSet<Integer> duplicateDelete = new HashSet<Integer>();
		
		for( int i=0; i<10;i++) {
			duplicateDelete.add(Integer.parseInt(br.readLine())%42);
		}
		
		bw.write(duplicateDelete.size()+"");
		bw.flush();
		bw.close();
		br.close();
	}
}
반응형