집 짓는 개발블로그
[코드트리 조별과제] 딕셔너리 (Python) - 8월 2주차 본문
👀 Dictionary
https://www.codetree.ai/missions/8/problems/hashmap-basic/description
시간초과 날 것 같으면 무조건 떠올리게 되는 딕셔너리에 대해 알아본다.
파이썬의 dict는 HashMap 자료구조로 되어있고, 데이터를 (key, value) 쌍 형태로 관리한다.
HashMap의 가장 큰 특징은 1) 순서가 없고 2) key로 value에 접근하는 시간복잡도가 매우 작다.
다음 링크의 게시물을 참고했을 때 시간복잡도는 Access에 N/A, Search에 O(1)이다.
https://paulonteri.com/dsa/ds&a/time-and-space-complexity
다만, 해시 알고리즘을 기반으로 하기 때문에 관리해야 하는 메모리가 크다는 단점이 있다.
그러나 코딩테스트에서는 보통 메모리보다 시간복잡도가 문제기 때문에 우선적으로 고려하게 되는 자료구조다.
대응되는 수와 문자 https://www.codetree.ai/missions/8/problems/corresponding-numbers-and-characters/description
제출한 코드
import sys
n, m = map(int, input().split())
str_dict = {}
num_dict = {i:"" for i in range(1, n+1)}
for j in range(1, n+1):
inputt = sys.stdin.readline().rstrip()
str_dict[inputt] = j
num_dict[j] = inputt
for _ in range(m):
ii = sys.stdin.readline().rstrip()
if ii.isdigit():
print(num_dict[int(ii)])
else:
print(str_dict[ii])
'알고리즘' 카테고리의 다른 글
[코드트리 조별과제] DP의 Memoization과 Tabulation (Python) - 8월 3주차 (0) | 2024.08.18 |
---|---|
[코드트리 조별과제] 백트래킹 (Python) - 8월 1주차 (0) | 2024.08.03 |
[코드트리 조별과제] 격자 안에서 한 칸씩 전진하는 DP (Python) - 7월 3주차 (0) | 2024.07.18 |
[프로그래머스] LV.3 베스트앨범 (Python) - 우선순위 큐 튜플 정렬 (0) | 2024.06.27 |
[프로그래머스] LV.3 두 큐 합 같게 만들기 (Python) (0) | 2024.06.27 |