https://www.acmicpc.net/problem/1620
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을 이용하도록 했다.
'Algorithm > Problems' 카테고리의 다른 글
[백준/파이썬] 11478번 서로 다른 부분 문자열의 개수 (0) | 2022.12.06 |
---|---|
[백준/파이썬] 10816번 숫자 카드2 (0) | 2022.11.18 |
[백준/파이썬] 14425번 문자열 집합 (0) | 2022.11.18 |
[백준/파이썬] 10815번 숫자 카드 (0) | 2022.11.18 |
[백준/파이썬] 1436번 영화감독 숌 (0) | 2022.11.17 |