[백준] 1269번-대칭 차집합-Java
in Algorithm on Algorithm
[백준] 1269번-대칭 차집합-Java
❓문제
- 대칭 차집합이란 두 집합의 합집합에서 공집합을 뺀 것을 대칭 차집합이라고 한다.
- 두 집합이 주어질때 대칭 차집합의 원소의 개수를 출력하라. 예시. A = {1,2,4} 이고 B = {2,3,4,5,6} 일때, A-B = { 1 } 이고,
B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다.
🖊️풀이법
- N요소를
HashSet
객체에 담는다. - M요소를 순서대로 Set객체에 포함하는지 확인한다.
- Set에 포함되는 경우 해당 요소를 지운다.
- 포함이되지 않는 경우 Set에 추가한다.
- Set의 Size를 출력한다.
정답 코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
Set<Integer> set = new HashSet<Integer>();
st = new StringTokenizer(br.readLine());
for(int i = 0; i < N; i++){
set.add(Integer.parseInt(st.nextToken()));
}
st = new StringTokenizer(br.readLine());
for(int i = 0; i< M; i++){
int tmp = Integer.parseInt(st.nextToken());
if(set.contains(tmp)){
set.remove(tmp);
} else{
set.add(tmp);
}
}
System.out.println(set.size());
}
}
정리
앞전 문제와 간단히 contains
메서드로 예외처리를 해주고 쉽게 풀수 있다.