티스토리 뷰
프로그래머스 알고리즘 고득점 kit 해시
- 해시는 해시 함수와 해시 테이블의 개념을 기반으로 한다.
- 언제쓸까? 정보를 빨리 찾고 싶을때, 특히 string을 기반으로 정보를 관리할 때 (대부분 Key가 String), 중복을 확인할 때
- 데이터가 너무 길거나 많을때, 한 번 계산한 해시 값을 재활용 할 수 있을 때(매번 데이터를 다 읽지 않아도 됨)
* 간혹 서로 다른 데이터가 같은 해시 값을 가지는 충돌이 발생할 수 있어, 중요한 상황에서는 해시와 == 를 함께 사용
- get/put/getorDefault
1. 파이썬 내장 함수 hash()
- 입력 데이터를 특정 고유값을 가지는 정수(해시값)로 매핑하는 함수
- 동일 값은 동일한 해시 값을 반환한다.
- 숫자의 경우 데이터 타입은 관계 없다(int, float 모두 값만 같으면 같게 나옴)
- 데이터를 숫자로 바꿔놓기 때문에 비교가 빠르다
(예: 두 백만글자짜리 문자열을 비교할 경우, 해시 대신 ==로 비교하면 데이터를 하나 하나 확인해야 한다.)
hash('hi') # 7165339163956087309
hash(1) # 1
hash(1) == hash(10) # False
hash(1) == hash(1.0) # True
hash(True) == hash(1.0) # True
2. 해시 테이블(Hash Table)
- Key-Value 쌍 데이터를 저장하는 자료구조로, 해시 값을 기반으로 데이터를 효율적으로 검색한다.
- Python에서는 해시 테이블의 구현을오 딕셔너리(dict)를 사용한다.
- 해시는 평균적으로 O(1)의 시간 복잡도로 키에 접근할 수 있어 빠른 검색 속도라는 장점이 있다.
- 해시 테이블의 키로 사용하려면, 객체가 변경 불가능(immutable)하고, 해시 함수를 사용할 수 있어야 한다.
- 사용 가능: 숫자, 문자열, 튜플
- 불가능: 리스트, 딕셔너리, set은 가변 객체로 해시 함수 사용 불가능 해 키로 사용할 수 없다.
3. hashmap
- 해시 테이블을 구현한 자료 구조, 예: dict
4. dict
greeting = dict({
"ko" : "안녕",
"en" : "Hi"
})
type(greeting)
# key에 해당하는 value 가져오기
greeting.get("ko") # '안녕'
# 해당 key없으면 "없음" 표시
greeting.get("jp","없음") # '없음'
# key값들만 가져오기
greeting.keys() # ['ko','en']
# key,value쌍 튜플로 모두 가져오기
greeting.items() # [('ko','안녕'),('en','Hi)]
'AI > Python' 카테고리의 다른 글
[python] 딕셔너리 setdefault과 get (0) | 2024.12.21 |
---|---|
[python] 접두사 startswith (1) | 2024.12.20 |
[python] 이터레이터와 제너레이터 (1) | 2024.12.09 |
[python] 클로저와 nonlocal, 데코레이터(@) (0) | 2024.12.02 |
[python] pickle, with (3) | 2024.12.02 |
- Total
- Today
- Yesterday
- 경제
- llm
- 오블완
- Python
- 고득점 Kit
- 운동
- 실기
- ChatGPT
- 다이어트
- 빅데이터 분석기사
- Ai
- 미라클모닝
- 갓생
- IH
- 루틴
- opic
- 티스토리챌린지
- 뉴스
- SQL
- 아침운동
- 습관
- C언어
- 오픽
- 줄넘기
- 프로그래머스
- 30분
- 영어회화
- 기초
- 스크랩
- 아침
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |