본문 바로가기

Algorithm&Data Structure

[Algorithm] Python 집합 유형

728x90
백준 집합 단계를 풀고,
알게 된 것과 더 공부한 것들에 대한 기록이다.

집합

파이썬에서 특정 원소를 찾아내는 작업

집합으로 접근했을 때 가장 빠르다는 것을 알게 되었다.

 

사실 이 단계를 접하기 전까지 집합 자료구조를 한 번도 써본 적이 없는데

이번에 유용하다는 것을 알게 되었고, 자주 쓸 것 같아 추가적으로 한 공부 기록을 남기려고 한다.

 

기본 개념

  • 집합과 딕셔너리 모두 중괄호를 사용하기 때문에 선언 시에 set 생성자를 이용해야 한다.
s=set()
  • 집합의 원소로 mutable(수정 가능)한 값을 가질 수 없다.
s=set()
s.add([1,2])
#TypeError: unhashable type: 'list'
  • 집합 내에 중복되는 값들은 자동으로 삭제된다.
s=set([1,2,3,1,2])
print(s)
#{1, 2, 3}
  • 집합에는 순서가 없다.
  • 집합의 in으로 특정 원소가 있는지 확인할 수 있다.
s=set([1,2,3,1,2])
print(1 in s)

메소드

추가

  • add( )
  • update( ) : mutable 한 값도 받아서 추가할 수 있다.
s=set([1,2,3,1,2])
s.update([4,3])
print(s)
#{1, 2, 3, 4}

제거

  • remove( ) : 해당 원소가 없으면 에러가 발생한다.
  • discard( ) : 해당 원소가 없어도 에러가 발생하지 않는다.

연산

  • union( ) : 합집합
  • intersection( ) : 교집합
  • difference( ) : 차집합

연산자

  • & : 교집합 연산자
  • | : 합집합 연산자
  • - : 차집합 연산자

알게 된 것

집합 자료구조가 다른 문제를 푸는 데 있어서

기본적인 작업 또는 마무리 작업에 유용할 것 같다는 생각이 들었다.

 

문제를 풀고 나서 다른 분들의 코드를 보며

더 효율적인 방법을 보는데 zip과 lambda를 활용한 창의적인 코드가 많았다.

 

계속해서 단계별 문제를 풀며 내가 원하는 결과를 빠르게 도출할 수 있도록 훈련하고, 기본 개념들을 공부해야 할 것 같다.

 

 

728x90