728x90
반응형
Silver IV
# 1620 나는야 포켓몬 마스터 이다솜
링크 : https://www.acmicpc.net/problem/1620
풀이
import sys
N, M = map(int, sys.stdin.readline().split())
dogam = {}
for i in range(1, N+1):
a = sys.stdin.readline().rstrip()
dogam[i] = a
dogam[a] = i
for i in range(M):
quiz = sys.stdin.readline().rstrip()
if quiz.isnumeric():
print(dogam[int(quiz)])
else:
print(dogam[quiz])
후기
- 시간 초과, 런타임 에러(ValueError, KeyError)를 수차례 반복하고 나서야 풀어낸 문제
- 딕셔너리 타입을 이용하는 Hash 구조의 경우 O(1)의 복잡도를 갖는다. → 시간 초과가 관건인 문제일 경우에 리스트보다 딕셔너리를 먼저 시도하도록 하자
- 딕셔너리안에 '도감번호 : 포켓몬 이름'으로 정리하고 값을 가져올 때 keys(), values()를 통해 호출하는 방식도 있다. 그러나 문제풀이에 제한이 따로 없을 경우 입력되는 모든 값을 key로 읽어올 수 있게끔 설정하는 방식이 쉽게 풀이 할 수 있었다.
- rstip()을 사용하는 이유
sys.stdin.readline()을 입력하면 데이터를 한 줄 단위로 가져오게 된다. 이때, 개행문자를 같이 가져온다. 만약 'pikachu'를 입력하고 엔터를 눌러 입력하게 되면, sys.stdin.readline()의 특성에 의해 'pikachu\n'를 읽어온다. rstrip()을 통해 개행문자가 입력되는 것을 방지할 수 있다.
이전까지 rstrip()을 사용하지 않아도 불편함을 느끼지 않았던 것은 자료형을 정해주었기 때문이다. map, int, str 등을 사용하는 과정에서 개행문자까지 읽어오는 것이 방지되었기 때문이다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] # 11727 2xn 타일링 2 (0) | 2022.02.26 |
---|---|
[백준 파이썬] # 11726 2xn 타일링 (0) | 2022.02.26 |
[백준 파이썬] # 15829 Hashing (0) | 2022.02.25 |
[백준 파이썬] # 4949 균형잡힌 세상 (0) | 2022.02.25 |
[백준 파이썬] # 9012 괄호 (0) | 2022.02.25 |