티스토리 뷰

프로그래머스 알고리즘 고득점 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
링크
«   2024/12   »
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
글 보관함