군만두의 IT 공부 일지

[백준] 1269번: 대칭 차집합 (파이썬) 본문

코딩테스트/백준

[백준] 1269번: 대칭 차집합 (파이썬)

mandus 2024. 11. 15. 21:16

✅문제: 1269번

📌개념정리

(1) 대칭 차 (Symmetric Difference)

  • 정의: 두 집합 A와 B의 대칭 차는 A∪B에서 A∩B를 뺀 부분
  • A와 B 중 하나에만 포함된 원소들로 이루어진 집합
  • AB=(AB)(BA)
  • 두 집합에서 공통되지 않는 요소들의 개수를 구할 때 사용됨.

📌문제풀이

주어진 두 리스트 A와 B에 대해 각 리스트를 집합으로 변환하고, 대칭 차 연산을 수행하여 대칭 차 집합의 크기를 계산하는 문제임.

 

1. 주어진 두 리스트 A와 B를 각각 집합으로 변환
2. set.symmetric_difference() 또는 ^ 연산자를 사용해 두 집합의 대칭 차 계산
3. 대칭 차 집합의 크기를 len() 함수로 계산

 

import sys
input = sys.stdin.read

def difference(a, b):
    set_a = set(a)
    set_b = set(b)
    return len(set_a.symmetric_difference(set_b))

data = input().split()
n, m = int(data[0]), int(data[1])
a = map(int, data[2:2+n])
b = map(int, data[2+n:])

result = difference(a, b)

print(result)

코드 실행 결과를 예제 입력 1로 확인하면, 실행 과정은 아래와 같음.

# 예제 입력 1
3 5
1 2 4
2 3 4 5 6

 

  • 리스트 AB는 각각 {1,2,4}{2,3,4,5}로 변환됨.
  • 대칭 차 계산
    • A△B=(A∪B)−(A∩B)
    • A∪B={1,2,3,4,5}
    • A∩B={2,4}
    • A△B={1,3,5}
  • 대칭 차의 크기 = 3
# 예제 출력 1
3

 

📌후기

이 문제는 집합 자료구조와 대칭 차 연산의 활용법을 이해하는 데 적합한 문제입니다. 특히, 두 집합 간의 공통되지 않은 요소를 빠르게 계산할 수 있다는 점에서 `set`의 강력함을 느낄 수 있었습니다. 대칭 차 연산은 간단한 문제처럼 보이지만, 실전에서 데이터 비교나 필터링에 유용하게 쓰일 수 있다는 점을 깨달았습니다.

  • 집합 자료구조와 대칭 차 연산 활용법을 이해하면서 풀 수 있었음.
  • 중복된 요소를 자동으로 처리하는 파이썬의 set 덕분에 코드가 간결해진 것 같음.
Comments