
집합 A와 집합 B의 원소를 각각의 HashSet에 넣는다.
집합 A에 있는 원소가 집합 B에 없다면 answer ++
반대도 마찬가지..
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
public class Set_1269 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
Set<Integer> setA = new HashSet<>();
Set<Integer> setB = new HashSet<>();
st = new StringTokenizer(br.readLine());
for (int i = 0; i<a; i++){
setA.add(Integer.parseInt(st.nextToken()));
}
st = new StringTokenizer(br.readLine());
for(int i = 0; i < b; i++) {
setB.add(Integer.parseInt(st.nextToken()));
}
int answer = 0;
for(int num : setA) {
if(!setB.contains(num)) {
answer += 1;
}
}
for(int num : setB) {
if(!setA.contains(num)) {
answer += 1;
}
}
System.out.println(answer);
}
}
HashSet 을 사용하여 집합을 표현 , (중복된 값을 허용하지 않고 순서를 보장하지 않는 자료구조임)
st를 계속해서 초기화 시키는 이유는 예를들어 사용자가 3 5를 입력하고 enter를 치는 순간 StringTokenizer 객체가 한번 사용된 것으로 간주되어 자동으로 EOF(end of file)를 가리키게 되기 때문이다.