코드

Pypy3 (Python3 기준 시간 초과)

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

pokemon = [input() for _ in range(n)]

for i in range(m):
    q = input()
    
    if q.isdigit():
        print(pokemon[int(q) - 1])
    else:
        print(pokemon.index(q) + 1)

Python3 정답

import sys

input = sys.stdin.readline

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

pokemon = {}

for i in range(n):
    po = input().rstrip()
    pokemon[i] = po
    pokemon[po] = i
    
for i in range(m):
    q = input().rstrip()

    if q.isdigit():
        print(pokemon[int(q) - 1])
    else:
        print(pokemon[q] + 1)

문제 해설

문제의 핵심 요소는 isdigit() 함수의 기능과 시간 복잡도의 개선을 위한 List 대신 Dictionary의 사용이다.

댓글남기기