Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩강의
- HTTP
- Go언어실무
- 실무PT
- 컴공과개념정리
- 데이터스키마
- 파이썬
- 코멘토실무PT
- 개발자되기
- 코멘토
- 개발자공통지식
- 자바
- 리액트
- 자료구조
- 개발공식문서 어려움
- 알고리즘
- 데이터베이스
- 개발 영어실력
- postgredb
- 개발 공식문서
- jsx
- golang
- 웹서버
- Go언어
- 스키마모델
- 유데미
- tableplus
- 개발실무
- 개발 공식문서 읽기
- 개발공부
Archives
- Today
- Total
웹개발일지
[자료구조/알고리즘] 맵과 집합 map, set - 파이썬 본문
728x90
맵
- key와 value로 이루어진 자료구조이다.
- "": ""의 형태로 JSON 구조와 비슷하다.
- 값은 중복 가능하나 키는 중복일 수 없다. 키로 검색해서 값을 찾는 구조이기 때문에.
시간복잡도
C++의 삽입/삭제 시간복잡도는 log(N)이다. 맵에 값을 한번 넣을때 혹은 삭제할 때 마다 시간복잡도가 log(N)인 것. log(1)보다 엄청 느린 것은 또 아니다. 파이썬은
어떤 키 값이 주어졌을 때 해시 함수 y = f(x) 에 키 값을 x에 대입하면 y가 나오는데 y는 해시 테이블에서 이 키에 해당하는 value를 어디에 담을지 주소값에 해당한다. 따라서 키를 넣으면 해시테이블의 위치를 바로 알 수 있다. 이 함수 자체의 시간복잡도가 O(1)이다. 물론 충돌이 나는 경우 등 1이 아닌경우도 있지만, 따라서 파이썬 맵의 삽입 삭제 시간복잡도는 O(1)이다.
집합
- 중복을 허용하지 않는다.
- add()로 값을 넣을 수 있다.
s = set()
s.add(10)
s.add(10)
s.add(10)
s.add(10)
s.add(50)
s.add(70)
s.pop()
print(s)
>>>{50, 70}
pop()
10이 빠졌다. 왜 10이빠졌지?? 이게 랜덤으로 임의의 값이 하나 빠지는 거여서 어떤 값이 빠질지 알 수 없다고 한다. 알고리즘 문제를 풀 때는 잘 쓸 일이 없겠다.
remove()
특정 값을 뺄 수 있다.
clear()
모든 값을 뺀다.
len()
집합 요소의 개수를 알 수 있다.
시간복잡도
맵과 마찬가지로 C++ 은 log(N) , 파이썬에서는 O(1)이다.
맵과 집합
맵과 집합은 서로 연관이 있어 필요할 때 섞어가며 사용하곤 한다.
'자료구조와 알고리즘' 카테고리의 다른 글
Arraylist vs Linkedlist (0) | 2023.01.18 |
---|---|
[백준2420] 여러 값 정수로 입력받기 & 절댓값함수의 사용 - Python (0) | 2023.01.16 |
[백준 4101] 입출력과 제어문 사용 문제 - 파이썬 (0) | 2023.01.11 |
[자료구조/알고리즘] 우선순위 큐 Priority Queue (Heap) - 파이썬 (0) | 2023.01.11 |
[자료구조/알고리즘] 파이썬 리스트와 덱을 활용한 스택과 큐 구현 (0) | 2023.01.11 |