코딩테스트/백준

백준 3052 Java

플래시🦥 2022. 7. 14.
반응형

 

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

 

3052번: 나머지

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

www.acmicpc.net

 

>>문제

 


>>코드

 

처음 단순하게 생각해서 짠 코드는 아래와 같다. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
	public static void main(String[] args) throws IOException{
	
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int[] num=new int[10];
		int[] cnt=new int[41];
		int a=0;
			
		for(int i=0; i<10;i++) {
			num[i]=Integer.parseInt(br.readLine());
			cnt[num[i]%42]++;
		}
		
		for(int e:cnt) {
			if(e>0) {
				a++;
			}
		}
		
		System.out.println(a);
	}
	 
}

예제1과 2는 정상적으로 작동을 하지만 예제3는 에러가 나서 작동을 하지 않았다. 

 

이곳 저곳 검색해서 알아낸 방법은 아래와 같다. 

import java.util.HashSet;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
 
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		HashSet<Integer> h = new HashSet<Integer>();
 
		
		for (int i = 0; i < 10; i++) {
			h.add(Integer.parseInt(br.readLine()) % 42);
		}
		
		System.out.print(h.size());
	}
}

이 방식을 사용하면 에러 없이 정상적으로 작동을 한다. 

Hashset은 자바 collection 중 set의 파생 클래스라고 한다.

특징으로는 

1. 중복되는 값을 허용하지 않아 하나만 저장을 한다.

2.순서의 개념이 없다. 

이다.

그래서 단순히 다른 값들의 수를 출력하는 것이기 때문에 사용할 수 있다. 

 

.add는 hashSet에 저장하고 .size는 hashSet의 크기 즉, 저장한 원소의 개수를 반환한다.


>>결과

728x90
반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 1152 Java  (0) 2022.07.19
백준 15596 Java  (0) 2022.07.15
백준 8958 Java  (2) 2022.07.15
백준 1546 Java  (0) 2022.07.15
백준 2577번 Java  (0) 2022.07.14

댓글