반응형
ttps://www.acmicpc.net/problem/3052
>>문제
>>코드
처음 단순하게 생각해서 짠 코드는 아래와 같다.
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 |
댓글