알고리즘/백준(BAEKJOON)
3052/백준/JAVA /1차원 배열/나머지 구하기/ HashSet
jojelly
2021. 3. 8. 03:57
반응형
3052번: 나머지
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
www.acmicpc.net
이 문제는 입력된 10 가지의 값을 각자 42로 나눈 나머지를 구하여 나머지의 값이 다른 값의 갯수를 구하는 문제이다.
이 문제를 해결할 수 있는 가장 간단한 방법은 HashSet을 이용하는 것이다.
-HashSet 은 자바 Collection 중 Set 의 파생클래스이다. (Set을 집합으로 생각하면 쉽다.)
HashSet의 몇 가지 특징
-
중복되는 원소를 넣을 경우 하나만 저장한다.
-
HashSet 은 순서 개념이 없다.
-
Collections.sort() 메소드를 사용불가. (만약 정렬을 하고 싶다면 리스트로 변환 후 정렬해야한다.)
이 문제는 나머지 값이 "서로 다른" 개수를 세면 되는 것이기 때문에 HashSet 을 이용할경우 나머지 값이 HashSet 원소에 이미 저장되어있는 중복된 값일 경우 저장이 되지 않는다. 즉 문제에서의 답이 HashSet에 저장되는 HashSet의 사이즈가 되는것이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package exam;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Iterator;
public class buffer3052 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashSet<Integer> number = new HashSet<Integer>();
/*
* 1.중복되는 원소를 넣을 경우 하나만 저장한다.
*/
for (int i = 0; i < 10; i++) {
number.add(Integer.parseInt(br.readLine())%42);
}
System.out.println(number. size());
}
}
|
cs |
반응형