문제 바로가기
풀이
- 여러줄을 입력받는 경우는 input() 보다는 sys 모듈을 이용한다.
- sys.stdin.readline()은 개행문자를 포함하므로 개행문자 제거를 위해 strip()을 추가한다.
- try/catch 문으로 입력값이 문자인지 여부를 확인
import sys
def isNum(s):
try:
int(s)
return True
except:
return False
N, M = map(int, sys.stdin.readline().split())
pokemon_dict = dict()
pokemon_name_list = []
i = 0
while i < N:
pokemon = sys.stdin.readline().strip()
pokemon_name_list.append(pokemon)
pokemon_dict[pokemon] = i + 1
i += 1
j = 0
while j < M:
q = sys.stdin.readline()
if isNum(q):
q = int(q)
answer = pokemon_name_list[q-1]
else:
answer = pokemon_dict[q]
print(answer)
j += 1
- 입력값의 첫번째 인덱스 값의 아스키코드 값이 숫자인지 판단하여 문제해결
import sys
N, M = map(int, sys.stdin.readline().split())
pokemon_dict = dict()
pokemon_name_list = []
i = 0
while i < N:
pokemon = sys.stdin.readline().strip()
pokemon_name_list.append(pokemon)
pokemon_dict[pokemon] = i + 1
i += 1
j = 0
while j < M:
q = sys.stdin.readline().strip()
if ord(q[0]) >= 48 and ord(q[0]) <= 57:
q = int(q)
answer = pokemon_name_list[q-1]
else:
answer = pokemon_dict[q]
print(answer)
j += 1