- 개인적으로 공부하면서 지속적으로 정보를 추가, 수정, 삭제합니다.
- 정확하지 않은 부분은 피드백 주시면 감사합니다.
2022-11-14
파이썬 TypeError: unhashable type
참고: https://daewonyoon.tistory.com/363
무엇?
list1 = [1, 2, 3]
set1 = set([1, 2, 3])
d = {}
d[list1] = "리스트를 딕셔너리 키로 지정 불가능"
d[set1] = "집합을 딕셔너리 키로 지정 불가능"
>>> TypeError: unhashable type
파이썬에서 딕셔너리의 키를 지정할 때 리스트 자료형을 지정할 때 발생하는 에러
왜?
unhashable이란 해쉬화를 할 수 없다는 뜻으로,
해쉬화란 value에 고유한 라벨을 붙여 주는 것과 비슷한데, 이때 붙이는 라벨은 쉽게 변형되면 안되므로(immutable) 리스트, 집합처럼 값을 바꿀 수 있는 자료형은 쓸 수 없음.
어떻게?
tuple1 = (1, 2, 3)
d = {}
d[tuple1] = "튜플을 딕셔너리 키로 지정하기 가능"
값을 변경할 수 없는 튜플로 키를 지정해주기!
2022-11-15
BFS는 항상 최단 거리를 보장하나? (feat. 특정 거리의 도시 찾기)
참고: https://nulls.co.kr/graph/141
무엇?
BFS는 항상 최단 거리를 보장한다.
왜?
백준의 특정 거리의 도시 찾기 반례를 찾아보다가, 더 적은 최단 거리가 들어올 수 있는 경우를 가정하여 조건 처리를 하라는 누군가의 코멘트를 보았다. (결론: 이 말은 틀렸다.)
음?
그래서 BFS가 항상 최단 거리를 보장하는 것이 맞는지 궁금해졌다.
어떻게?
파이썬 KeyError를 안 보고 싶다면…
참고:
무엇?
KeyError란 딕셔너리와 관련된 에러이다.
딕셔너리에 없는 key를 넣어 값을 찾으려고 할 때 발생한다.
왜?
백준 3055번 탈출 문제… 뿐만 아니라 BFS, DFS 문제에서 딕셔너리를
많이 사용했는데 키 에러로 애먹음.
어떻게?
# 방법1 : 조건문 한 줄 추가하기
if dict[key] > 1: # 이런 식으로 바로 쓰지 말고,
print(dict[key])
if key in dict.keys: # 이 라인을 추가해주기
if dict[key] > 1:
print(dict[key])
# 방법2 : fromkeys 메소드를 이용해서 미리 딕셔너리를 초기화 해놓기!!
# dict.fromkeys(key목록, 디폴트값)
tup = (1, 2, 3)
d = dict.fromkeys(tup, 0)
2022-11-16
위상정렬 topological sort
참고: 책 Introduction to Algorithms Third Edition
[이것이 코딩 테스트다 with Python] 36강 위상 정렬 - YouTube
무엇?
자료구조 & 알고리즘 노트에 추가!
왜?
어떻게?
문자열 검색 알고리즘
참고: 책 Do it 자료구조와 함께 배우는 알고리즘 입문 파이썬 편
무엇?
문자열 검색 알고리즘
- 브루트포스,
- KMP법,
- 보이어무어
왜?
코치님의 미션
기술 면접 등으로 잘 등장한다고 함 !
어떻게?
'크래프톤정글 > TIL & WIL' 카테고리의 다른 글
크래프톤정글 4주차; TIL 2 - DP 동전 문제, LCS, 파이썬에서 2차원 배열 주의사항, 배낭 문제 (1) | 2022.11.28 |
---|---|
크래프톤정글 4주차; TIL 1 - DP, 피보나치 수 문제, 플로이드 알고리즘 (0) | 2022.11.28 |
크래프톤정글 3주차; TIL 3 - 최소 신장 트리 문제, DFS와 BFS, 연결 요소의 개수 문제 (0) | 2022.11.14 |
크래프톤정글 3주차; TIL 2 - 파이썬 BST, 최소 신장 트리 (0) | 2022.11.14 |
크래프톤정글 3주차; TIL 1 - 트리와 그래프, 자료 구조의 분류 (0) | 2022.11.14 |