Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

집 짓는 개발블로그

[코드트리 조별과제] 딕셔너리 (Python) - 8월 2주차 본문

알고리즘

[코드트리 조별과제] 딕셔너리 (Python) - 8월 2주차

취준er 2024. 8. 11. 18:30

👀  Dictionary

 

 

https://www.codetree.ai/missions/8/problems/hashmap-basic/description

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

 

시간초과 날 것 같으면 무조건 떠올리게 되는 딕셔너리에 대해 알아본다. 

파이썬의 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

 

Complexity Analysis & Big O | DSA | PaulOnteri.com

Time and space complexity of algorithms.

paulonteri.com

 

 

다만, 해시 알고리즘을 기반으로 하기 때문에 관리해야 하는 메모리가 크다는 단점이 있다. 

그러나 코딩테스트에서는 보통 메모리보다 시간복잡도가 문제기 때문에 우선적으로 고려하게 되는 자료구조다.

 

 

 

 

 

 

대응되는 수와 문자 https://www.codetree.ai/missions/8/problems/corresponding-numbers-and-characters/description

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

 

제출한 코드

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])