https://www.acmicpc.net/problem/1620
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
names = [input().strip() for _ in range(N)]
for _ in range(M):
q = input().strip()
if q.isdigit():
print(names[int(q) - 1])
else:
print(names.index(q) + 1)
.index()
사용으로 인해 시간초과가 발생했다.pokemons.index(q)
는 names
리스트에서 q
를 찾을 때까지 선형 탐색을 수행한다.import sys
input = sys.stdin.readline
N, M = map(int, input().split())
names = [input().strip() for _ in range(N)]
dic = {name: i+1 for i, name in enumerate(names)}
for _ in range(M):
q = input().strip()
if q.isdecimal():
print(names[int(q) - 1])
else:
print(dic[q])
.index()
사용을 피하기 위해 names
리스트와 더불어 dic
딕셔너리를 사용하기로 했다.names
: 포켓몬 이름을 저장한 liste.g. names = ['Bulbasaur', 'Ivysaur', ...]
dic
: 포켓몬 이름: 번호로 저장한 dictionarye.g. dic = {'Bulbasaur': 1, 'Ivysaur': 2, ...}
.isdigit()
대신 isdecimal()
을 사용했다.isdigit()
: 숫자처럼 생긴 모든 글자를 숫자로 침.isdecimal()
: int
형으로 변환 가능한지 확인import sys
input = sys.stdin.readline
N, M = map(int, input().split())
dic = {}
for i in range(1, N+1):
name = input().strip()
dic[name] = i
dic[i] = name
for _ in range(M):
q = input().strip()
if q.isdecimal():
print(dic[int(q)])
else:
print(dic[q])
dic
안에 포켓몬 이름: 번호
, 번호: 포켓몬 이름
으로 저장하였다..index()
대신 dictionary
를 이용하자..isdecimal()
, .isdigit()
, .isnumeric()
은 다르다.isdeciaml()
: 문자열이 10진수 숫자로만 이루어져 있는지를 판별isdigit()
: 문자열이 유니코드 숫자로만 이루어져 있는지를 판별isnuemric()
: 숫자로 인정되는 유니코드 문자들을 모두 허용int
로 변환 가능한지 확인하려면 .isdecimal()
을 사용하자.