코딩테스트

[python] 백준 1620번 : 나는야 포켓몬 마스터 이다솜 (실버 2)

Alpaca_data_cloud 2024. 7. 11. 12:06

https://www.acmicpc.net/problem/1620

해당 문제는 시간 초과 문제가 발생하였다. 그이유는 다음과 같다.리스트 하나로 index에는 번호를 넣고 value 에는 포켓몬 이름을 넣게 되면 이름으로 index를 찾을때에 list.index(value)는 O(N)의 시간복잡도가 발생한다고 한다. 이에 대한 해결방법은 딕셔너리 추가로만들어 key 에 포켓몬 이름을 넣고 value 에는 숫자를 넣어주는 것이다. 그렇게 되면 O(1) 의 시간복잡도를 가지게 되어 시간초가가 발생하지 않는다.

import sys
input = sys.stdin.readline

n , m = map(int,input().split())

namebook = dict()
book = ['']
count = 0
for _ in range(n):
    count += 1
    name = input().rstrip()
    book.append(name)
    namebook[name] = count

for _ in range(m):
    problem = input().rstrip()
    if 48 <= ord(problem[0]) <= 57:
        print(book[int(problem)])
    else:
        print(namebook.get(problem))