본문 바로가기
알고리즘/백준 알고리즘

[Baekjoon] 백준 알고리즘: 1269 - 대칭 차집합

by 며루치꽃 2021. 11. 23.

문제

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

 

1269번: 대칭 차집합

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

www.acmicpc.net

내가 생각했던 풀이과정

 

1. 집합에 공통 요소가 없기 때문에 리스트 대신 Set 으로 입력받는다.

 

2. Set의 교집합, 합집합, 차집합, 대칭 차집합 등의 지원해주는 연산자를 통하여 문제를 풀어낸다.

 

나의 풀이

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

A_set = set(map(int, input().split()))
B_set = set(map(int, input().split()))

print(len(A_set ^ B_set))

 

새로 알게된 점, 확인해야할 점

1. 교집합

set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])

print(set1 & set2)
print(set1.intersection(set2))

{3, 4, 5, 6}
{3, 4, 5, 6}

 

2. 합집합

set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])


print(set1 | set2)
print(set1.union(set2))


{1, 2, 3, 4, 5, 6, 8, 9}
{1, 2, 3, 4, 5, 6, 8, 9}

 

3. 차집합

 

set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])


print(set1 - set2)
print(set1.difference(set2))

{1, 2}
{1, 2}

 

 

4. 대칭 차집합

 

set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])

print(set1 ^ set2)

{1, 2, 8, 9}

 

 

4. 집합 추가와 제거

 

set1 = set([1,2,3,4,5,6])
set1.update([7,8,9])         # update
print(set1)

set1.remove(9)               # remove
print(set1)
-------------------------------------------
{1, 2, 3, 4, 5, 6, 7, 8, 9} {1, 2, 3, 4, 5, 6, 7, 8}

 

댓글