Algorithm/Problems

[백준/파이썬] 1620번 나는야 포켓몬 마스터 이다솜

공부좀하시졍 2022. 11. 18. 11:53

https://www.acmicpc.net/problem/1620

 

1620번: 나는야 포켓몬 마스터 이다솜

첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면

www.acmicpc.net

import sys

read = sys.stdin.readline
        
n,m = list(map(int, read().split()))

poke_dict = {}
q = []
idx = 1

for _ in range(n):
  key = idx
  val = read().rstrip()
  poke_dict[key] = val
  idx += 1

q = [read().rstrip() for _ in range(m)]

reverse_dict = dict(map(reversed, poke_dict.items()))

for i in range(m):
  if q[i].isdigit():
    print(poke_dict[int(q[i])])
  else:
    print(reverse_dict[q[i]])

문제에서 포켓몬 번호와 포켓몬 번호에 해당하는 문자열 이라는 언급을 보고 딕셔너리를 사용해야겠다고 생각했다.

for문으로 n개의 포켓몬을 입력받은 뒤, '번호:포켓몬 문자열' 형태로 저장해주었다.

이후에 문제를 맞춰야 하는 것 중 문자열을 입력받아 포켓몬 번호를 출력해야 하는 경우를 대비해서

reverse_dict을 통해 기존 poke_dict의 key와 value 값을 바꾸어주었다.

.isdigit()을 이용해 숫자면 poke_dict을 이용하도록 문자열이면 reverse_dict을 이용하도록 했다.