본문 바로가기
코딩라이브러리/파이썬

파이썬 중복제거 set 집합함수 (with 백준 2776)

by 유니네 라이브러리 2024. 5. 29.

set() 함수 사용

  • 중복제거를 하고 싶을 때, set() 함수를 사용한다.
  • set(i) 함수는 집합으로 만들어주는 함수이며 i의 값은 iterable 형식을 집합 객체로 반환해 준다.
  • 이때 iterable 형식은 딕셔너리의 키나 집합의 멤버로 사용할 수 있는 객체여야 한다.
#list 를 set() 로 변환하면 집합으로 반환하면서 중복제거한다.
a = [2,1,3,4,5,5,6,7,3]
print(a) # [2, 1, 3, 4, 5, 5, 6, 7, 3]
print(len(a)) # 9
print(set(a)) # {1, 2, 3, 4, 5, 6, 7}
print(len(set(a))) # 7


b = ['lee', 'yun', 'park', 'yun', 'bang', 'lee']
print(b) # ['lee', 'yun', 'park', 'yun', 'bang', 'lee']
print(len(b)) # 6
print(set(b)) # {'bang', 'yun', 'lee', 'park'}
print(len(set(b))) # 4
  • set() 함수 사용하여 중복제거한 다음에는 다시 리스트로 형변환하여 사용한다.
#set 함수로 변환하여 중복제거한 후 다시 list 로 형변환하여 사용
#다시 list 형변환
chga = list(set(a))
print(chga) # [1, 2, 3, 4, 5, 6, 7]
chgb = list(set(b))
print(chgb) # ['yun', 'park', 'lee', 'bang']
  • set 함수 기타 연산 메서드
a = ['lee', 'yun', 'park']
b = ['yun', 'bang', 'lee']
#교집합
c = set(a).intersection(b)
print(c) # {'yun', 'lee'}
#합집합
d = set(a).union(b)
print(d) # {'lee', 'bang', 'yun', 'park'}
#차집합
e = set(a).difference(b)
f = set(b).difference(a)
print(e) # {'park'}
print(f) # {'bang'}

 

set(), frozenset() 함수 차이점

  • set() 함수와 frozenset() 함수는 동일한 기능을 가지고 있으나 값을 추가할 수 있는지 없는지가 주요 차이점이다.
  • set() 은 가변함수, frozenset() 은 불변함수
ad = set(a)
ad.add('bang') # 요소 추가
print(ad) # {'lee', 'yun', 'park', 'bang'}
fd = frozenset(b)
fd.add('bang') # AttributeError: 'frozenset' object has no attribute 'add'

 

▶ set 연습 백준 문제풀이

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

import sys
T = int(sys.stdin.readline().rstrip())

for i in range(0, T):
    cnt1 = int(sys.stdin.readline().rstrip())
    memo1 = set(map(int,sys.stdin.readline().rsplit()))
    cnt2 = int(sys.stdin.readline().rstrip())
    memo2 = list(map(int,sys.stdin.readline().rsplit()))
          
    for j in memo2:        
        if j in memo1:
            print(1)
        else:
            print(0)

 

☞ 파이썬 자습서 참고 사이트

https://docs.python.org/ko/3/library/stdtypes.html#set

 

Built-in Types

The following sections describe the standard types that are built into the interpreter. The principal built-in types are numerics, sequences, mappings, classes, instances and exceptions. Some colle...

docs.python.org