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
'Algorithm&Data Structure' 카테고리의 다른 글
[Algorithm] 순열&조합 JAVA로 구현 (0) | 2023.06.27 |
---|---|
[Algorithm] 정수론 및 조합론(백준 2981,2004번) (0) | 2023.01.25 |
[Algorithm] 백준 정렬 파트 (2108,18870) (1) | 2022.12.22 |
[Algorithm] 탐색 알고리즘 DFS/BFS (0) | 2022.12.11 |
[Data Structure] 그래프의 구성, 종류, 표현 (Graph) (0) | 2022.12.11 |