파일 업로드

변수의 자료형 (집합)

profile
실행 시간 제한메모리 제한
1 초512 MB
📃 해결할 문제

집합(Set)중복 없이 여러개의 원소를 담아둘 수 있는 자료구조입니다.

앞에서 배운 리스트는 [ ]으로, 튜플은 ()으로 둘러싸지만, 집합은 {}으로 둘러쌓아 표현합니다.

 

집합중복된 원소를 제거하는데 매우 유용한 자료구조에요

# set type 선언
x:set = set()
# data = {} # x아님x 이렇게 선언하면 dictionary(dict) 가 됩니다!


# 자료형 명시 및 값과 함께 선언
x:set = {1,2,'삼', 4.0, "오"}

# 자료형 생략하기
x = {1,2,'삼', 4.0, "오"}

# 출력하기
print(x)
# 결과
# {1, 2, '오', 4.0, '삼'}

이렇게 집합을 선언할 수 있고 집합 자료형의 예약어'set' 입니다.

 

리스트에 중복된 원소를 없애볼게요

x = [1, 1, 2, 2, 3]
print(x)

# 집합으로 자료형 변환
x2 = set(x)
print(x2)

# 결과
# {1, 2, 3}

이렇게 여러 원소가 중복되어 있는 경우, 집합 자료구조로 타입을 변경(casting)하면 간단하게 중복을 제거할 수 있어요

 

  • 원소 추가
# 집합 선언
x = {1, 2, 3}

x.add(5)  ## 원소 넣기

print(x)
# 결과
# {1, 2, 3, 5}

# 한번에 여러개의 원소 넣기
x.update({3,4,5,6,7})
print(x)
# 결과
# {1, 2, 3, 4, 5, 6, 7}

 

  • 원소 삭제
# 집합 선언
x = {1, 2, 3}

x.remove(3) # 원소 삭제
# x의 원소들{1,2,3} 중 하나의 값을 매개변수(3)로 입력합니다.

print(x)
# 결과
# {1, 2}

# 한번에 여러개의 원소 넣기
x.update({3,4,5,6,7})
print(x)
# 결과
# {1, 2, 3, 4, 5, 6, 7}
# (합집합형태)

 

대신 집합은 이상적으로는 순서가 없다고 생각하셔야 합니다.

예를 들어볼게요

x = {1,2,3}
x.add(7)
x.add(5)
print(x) # 어떻게 출력될까요?
# {1,2,3,5,7}

x 에 7을 입력하고 5를 입력했는데 {1,2,3,7,5} 로 출력되는 것이 아닌, {1,2,3,5,7} 로 출력되지 않으셨나요? 

즉 집합은 순서가 없습니다.

따라서 리스트처럼 인덱스 번호를 사용하여 특정 값에 접근할 수도 없습니다.

 

또한 집합은 교집합, 합집합, 차집합등을 구할 수 있습니다.

 

  • 교집합
x1 = {1,2,3,4,5}
x2 = {3,4,5,6,7}

print(x1 & x2)
# {3, 4, 5}

x3 = x1.intersection(x2)
print(x3)
# {3, 4, 5}

 

  • 합집합
x1 = {1,2,3,4,5}
x2 = {3,4,5,6,7}

x3 = x1 | x2
print(x3)
# {1, 2, 3, 4, 5, 6, 7}

x3 = x1.union(x2)
print(x3)
# {1, 2, 3, 4, 5, 6, 7}

 

  • 차집합
x1 = {1,2,3,4,5}
x2 = {3,4,5,6,7}

x3 = x1 - x2
print(x3)
# {1, 2}

x3 = x2 - x1
print(x3)
# {6, 7}

x3 = x1.difference(x2)
print(x3)
# {1, 2}

x3 = x2.difference(x1)
print(x3)
# {6, 7}

 


이제 실습해볼까요?

 

실습 문제

임의로 주어지는 두개의 집합 X1, X2의

  • X2 - X1 인 차집합
  • X1 과 X2의 합집합
  • X1 과 X2의 교집합

을 구하세요.

💻 입력

두개의 집합이 주어집니다.

첫번째 줄에는 집합 X1

첫번째 줄에는 집합 X2

🖨️ 출력
  • X2 - X1 인 차집합 결과
  • X1 과 X2의 합집합 결과
  • X1 과 X2의 교집합 결과

를 출력합니다.


💻 예제 입력 1
1,2,3,4,5
2,1,3,7,9,5
🖨️ 예제 출력 1
{9, 7}
{1, 2, 3, 4, 5, 7, 9}
{1, 2, 3, 5}
💻 예제 입력 2
1,2,3,5,7,9
2,1,3,8,6,-1
🖨️ 예제 출력 2
{8, 6, -1}
{1, 2, 3, 5, 6, 7, 8, 9, -1}
{1, 2, 3}

출처: 돌핀 코딩