[Python]백준_1269 : 대칭 차집합

Alal11·2022년 12월 6일
0
post-thumbnail

출처

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


문제

자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오. 두 집합 A와 B가 있을 때, (A-B)와 (B-A)의 합집합을 A와 B의 대칭 차집합이라고 한다.

예를 들어, A = { 1, 2, 4 } 이고, B = { 2, 3, 4, 5, 6 } 라고 할 때, A-B = { 1 } 이고, B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다.


입력

첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어진다. 각 집합의 원소의 개수는 200,000을 넘지 않으며, 모든 원소의 값은 100,000,000을 넘지 않는다.


출력

첫째 줄에 대칭 차집합의 원소의 개수를 출력한다.


예제 입출력


알고리즘 분류

  • 자료 구조
  • 해시를 사용한 집합과 맵
  • 트리를 사용한 집합과 맵

➡️문제 분석

(A-B)와 (B-A)의 길이의 합을 출력하면 되는 문제


➡️코드(⭕)

import sys
input = sys.stdin.readline

n, m = map(int, input().split())

a = set(map(int, input().split()))
b = set(map(int, input().split()))

print(len(a-b)+len(b-a))

➡️코드 분석

set() 함수는 키 값만 있는 딕셔너리 형태로 중복되지 않는 원소를 얻을 때 주로 사용한다. 딕셔너리랑 마찬가지로 순서가 없다.

  1. A의 원소 개수 n과 B의 원소 개수 m을 입력받는다.

  2. 집합 A와 B의 모든 원소를 각각 set 함수를 적용시켜서 중복 원소 없이 a와 b에 넣어준다.

  3. (A-B)와 (B-A)의 합집합이 대칭 차집합이므로, 대칭 차집합의 원소의 개수는 (a-b)길이 + (b-a)길이가 된다.


➡️end

set() 함수에 대해 알게 되었다. 보통 집합에서 많이 쓰인다고 한다.

0개의 댓글