알고리즘/백준
[Python] 백준 1620: 나는야 포켓몬 마스터 이다솜
suwonieee
2023. 2. 11. 17:42
https://www.acmicpc.net/problem/1620
1620번: 나는야 포켓몬 마스터 이다솜
첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면
www.acmicpc.net
ANS
import sys
N,M = map(int, input().split())
num = 1
key_is_name = {}
name_is_key ={}
for i in range(N):
pk = input()
key_is_name[pk] = num
name_is_key[num] = pk
num += 1
for q in range(M):
q = sys.stdin.readline().rstrip()
if q.isdigit() ==True: #숫자를 받은 경우(이름을 출력해야 함)
print(name_is_key[int(q)])
else:
print(key_is_name[q])
🔑
더보기
번호를 통해 포켓몬 이름을 구하는 경우도 있고, 포켓몬 이름을 통해 번호를 구하고자 하는 경우도 있으니 dict를 두 개 만들어서 구하고자 했다. 계속해서 keyerror가 떠서 뭐가 문젠지 계속해서 고민을 했다. 그냥 tc input의 오른쪽에 빈칸이 있는 것이였다. 그러한 문제를 rstrip으로 없애주었다.
또한 tc에서 int와 str을 구별해야 했었는데, 처음에는 tc의 input을 str로 바꿔서 판별하고자 했는데, 그 과정에서 계속해서 에러가 났다. 예를 들어 '16'>'9'가 Python에서 False와 같은 문제를 고려하지 못한 것이다. 그러한 문제 때문에 시맨틱 에러가 계속해서 떴던 것이다. 그 후 isdigit을 사용할 수 있다는 것을 생각해내고 q 구별 조건을 만들어줬다.
- 내장함수 잘 숙지해두기
- dict 사용 두려워하지 않기