ConcurrentModificationException
HashSet이나 HashMap 같은 컬렉션에서
반복문을 돌리는 동안 해당 컬렉션을 수정할 때 발생한다.
컬렉션을 수정하기 보다는 두 집합의 교집합을 찾는 것이 더 효율적이다.
retainAll 메서드를 사용해서 교집합을 찾으면 된다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// 듣도 못한 사람을 저장하는 집합
HashSet<String> listen = new HashSet<>();
for(int i=0; i<N; i++) {
listen.add(br.readLine());
}
// 보도 못한 사람을 저장하는 집합
HashSet<String> look = new HashSet<>();
for(int i=0; i<M; i++) {
look.add(br.readLine());
}
// 듣도 보도 못한 사람의 교집합 찾기
listen.retainAll(look);
// 결과를 정렬하기 위해 리스트로 변환
List<String> listenLook = new ArrayList<>(listen);
Collections.sort(listenLook);
// 출력
StringBuilder sb = new StringBuilder();
sb.append(listenLook.size()).append("\n");
for (String name : listenLook) {
sb.append(name).append("\n");
}
System.out.print(sb);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준 2579] 계단 오르기 (4) | 2024.11.29 |
---|---|
[백준 1620] 나는야 포켓몬 마스터 이다솜(Java) (6) | 2024.11.14 |
HashSet (0) | 2024.11.07 |
[백준 1003번] 피보나치 함수(Java) (0) | 2024.11.07 |
Dynamic Programming(DP) (2) | 2024.11.06 |