백준 1620 나는야 포켓몬 마스터 이다솜

김민영·2023년 1월 10일
0

알고리즘

목록 보기
44/125

과정

  • 도감 번호로 들어오면 포켓몬 이름을, 포켓몬 이름이 들어오면 도감 번호를 출력해야 한다.
  • 도감 번호가 인덱스인 리스트를 만들고, 포켓몬 이름의 첫 글자가 key 인 딕셔너리를 만들었다.
    • python 시간 초과, pypy 시간 초과는 아니지만 메모리와 시간이 많이 들음
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
lst = []
dic = {}
for _ in range(N):
    lst.append(input().rstrip())
for i in range(65, 91):
    dic[i] = []
for i in range(97, 123):
    dic[i] = []

for i in range(N):
    dic[ord(lst[i][0])].append(i)

for _ in range(M):
    inp = input().rstrip()
    try:
        inp = int(inp)
        print(lst[inp-1])
    except:
        for i in dic[ord(inp[0])]:
            if lst[i] == inp:
                print(i+1)
  • 도감 번호가 key인 딕셔너리와 포켓몬 이름이 key인 딕셔너리 두 개를 만듦
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
dic_num = {}
dic_name = {}

for i in range(N):
    inp = input().rstrip()
    dic_num[i] = inp
    dic_name[inp] = i


for _ in range(M):
    inp = input().rstrip()
    if inp.isdigit():
        print(dic_num[int(inp) - 1])
    else:
        print(dic_name[inp] + 1)
  • 리스트를 사용하는 것보다 딕셔너리를 사용하는 것이 시간과 메모리를 적게 쓴다는 것을 알았다.
  • 이에 관해 찾아보니 데이터 양이 적으면 별 차이가 없지만, 데이터가 많아지면 리스트는 연산이 많아지고, 딕셔너리는 일정하다고 한다.
    • 리스트는 처음부터 탐색하느라 연산이 많아지므로
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글