안녕하세요! Eric 입니다!
오늘 풀어볼 문제는
백준 1269 번 대칭 차집합 이라는 문제입니다.
저는 해당 문제를 HashMap 하나만 사용 해서 풀어보았습니다.
우선 집합 A를 HashMap 에 넣었습니다.
그리고 집합 B와 비교하면서 중복되는 개수를 count 했습니다. (int intersection )
그리고 정답으로는
집합 A의 원소 개수 + 집합 B의 원소의 개수 - 2 * 중복 원소 개수
를 하였습니다.
왜냐하면, 결국에 차집합의 개수는
하단의 사진처럼 적용 할 수 있기 때문입니다.
import java.io.*;
import java.util.HashMap;
import java.util.StringTokenizer;
public class N1269 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
HashMap<Integer, Integer> map = new HashMap<>();
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
map.put(Integer.parseInt(st.nextToken()), 0);
}
st = new StringTokenizer(br.readLine());
int intersection = 0;
for (int i = 0; i < m; i++) {
int tmp = Integer.parseInt(st.nextToken());
if (map.containsKey(tmp)) intersection++;
}
int answer = n + m - 2 * intersection;
bw.write(String.valueOf(answer));
bw.flush();
bw.close();
br.close();
}
}