BOJ

[백준][python] 1269 대칭 차집합

winter17 2023. 1. 27. 22:04

https://www.acmicpc.net/problem/1269

 

1269번: 대칭 차집합

첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어

www.acmicpc.net

풀이 과정

풀이_1

1. set 함수를 사용해 공백으로 구분하여 A, B 입력값을 각각 받아주고

2. len함수를 이용해서 A - B와 B - A의 길이를 합하면 대칭 차집합의 원소의 개수가 출력된다

A, B = map(int, input().split())
A = set(map(int, input().split()))
B = set(map(int, input().split()))

print(len(A - B) + len(B - A))

풀이_2

1. 풀이_1의 방식과 동일하나 출력할 때 ^ 연산자를 사용하면 대칭 차집합을 구하기 위해 차집합으로 하나하나 구하지 않아도 된다

n = input()
a = set(map(int,input().split()))
b = set(map(int,input().split()))
print(len(a ^ b))

리뷰

풀이_1 방식으로 풀었는데 코드 리뷰 때 풀이_2 방식으로 푼 사람이 있어서 가져왔다

풀이_1에서 A, B의 원소의 개수를 입력받을 때 map, int를 사용할 필요가 없었는 데 사용했고

풀이_2에서 원소의 개수를 입력 받을 때 split() 없이 input()으로만 공백으로 구분하여 값을 입력할 수 있다는 것을 알았다

 

원소를 입력받을 때 set이 아니라 list로 받아서 출력해보려고 했는데 A - B나 a ^ b나 set함수 연산할 때만 사용하기 때문에

TypeError가 발생한다!