반응형
🔺 문제
1269번: 대칭 차집합
첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어
www.acmicpc.net
🔺 코드
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));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
Set<Integer> set = new HashSet<>();
st = new StringTokenizer(br.readLine()," ");
for(int i=0 ; i < A ; i++) {
set.add(Integer.parseInt(st.nextToken()));
}
st = new StringTokenizer(br.readLine()," ");
for(int i=0 ; i < B ; i++) {
int num = Integer.parseInt(st.nextToken());
if(set.contains(num)) {
set.remove(num);
} else {
set.add(num);
}
}
System.out.println(set.size());
}
}
✅ 해결 아이디어
- 차집합의 원소 = 집합 A의 원소 + 집합 B의 원소 - 두 집합의 교집합
- 1. 먼저 Set에 집합 A의 원소를 넣는다.
- 2. 그 다음에 집합 B의 원소를 입력받을 때, 이 값이 이미 Set에 있는 값(=교집합)이라면 Set에서 제거해준다.
- 3. Set의 크기 = 차집합 원소의 개수
🔺 다른 풀이들
[BOJ] 1269 - 대칭 차집합 JAVA
www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모
codeung.tistory.com
마지막에 차집합 원소의 개수 구하는 부분이 나랑 조금 다르다.
나는 집합 B의 원소를 받을 때, 이미 Set에 저장된 원소인지 아닌지에 따라 Set에 값을 추가할지 뺄지 했었다면,
이 코드는 일단 집합 B 원소를 다 받고 나중에 setA의 값을 setB가 포함했는지, setB의 값을 setA가 포함했는지 확인하면서
차집합 원소의 개수를 계산하셨다.
💬 느낀 점
Set이 제일 재밌다...하하
다른 알고리즘 실버 문제가들도 Set, Map 실버 문제들 수준으로 쉬웠으면,,,
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 12891번: DNA 비밀번호 (0) | 2023.04.10 |
---|---|
[백준/JAVA] 11478번: 서로 다른 부분 문자열의 개수 (0) | 2023.04.10 |
[백준/JAVA] 1764번: 듣보잡 (0) | 2023.04.10 |
[백준/JAVA] 10816번: 숫자 카드 2 (0) | 2023.04.10 |
[백준/JAVA] 19532번: 수학은 비대면강의입니다 (0) | 2023.04.09 |