[백준] 3052번 나머지

Drumj·2023년 3월 7일
0

문제


정답 코드

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
	int a = Integer.parseInt(br.readLine());
    arr[i] = a % 42;
}
int count = (int) Arrays.stream(arr).distinct().count();
System.out.println(count);

아~ 코드 깔끔하다~ 흐흐!!
라고 생각하는 순간

습.... 시간이 너무 많이 걸렸는뎅...?

사실 위의 코드도 자바의 정석 공부하면서 배웠던 stream을 써먹을라고 머리를 좀 굴렸었다... ㅠㅠ 배운거 안보고 쓸려니까 어떻게 작성해야 하는지 몰랐던 나..
arr.stream() 치고 있으니까 안되지 임마....

여튼! 중복 제거하고 카운트 해서 호로록~ 할려고 했으나 시간이 오래 걸려서
띠용???? 다른 더 좋은 방법이 있나? 했더니


짜잔 HashSet 이란게 있단다 얘야?

분명히 공부했었는데 중복을 허용하지 않고, 순서가 보장되지 않음 만 기억하고 그냥 스쳐지나갔었다.... Set!

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashSet<Integer> hs = new HashSet<Integer>();

for (int i = 0; i < 10; i++) {
	hs.add(Integer.valueOf(br.readLine()) % 42);
}
System.out.println(hs.size());

무친...!!! 뭐야 이 깔끔한 코드는...!!

.add()로 바로 넣어주고
.size()는 원소의 개수를 반환한다고 한다....

자료구조에 대해서도 많이 공부해야겠다. 배열 문제라고 배열만 사용할 필요는 없다는 것

0개의 댓글