1. 문제와 예제
(문제 링크: https://www.acmicpc.net/problem/1620)
1620번: 나는야 포켓몬 마스터 이다솜
첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면
www.acmicpc.net
2. 전체 코드
import sys
input = sys.stdin.readline
# 입력 받기
N, M = map(int, input().split()) # 도감에 있는 포켓몬 수, 맞춰야 하는 문제 수
dct = {} # dict
# {'포켓몬 번호': '포켓몬 이름', '포켓몬 이름': '포켓몬 번호'} 형식의 dict 생성
for i in range(N): # i: 포켓몬 번호
name = input().rstrip() # name: 포켓몬 이름
dct[i] = name
dct[name] = i
for _ in range(M):
que = input().rstrip() # 문제
if que.isdigit(): # 문자가 들어왔으면
print(dct[int(que)-1]) # 포켓몬 번호 출력
else: # 숫자가 들어왔으면
print(dct[que]+1) # 포켓몬 이름 출력
3. 코드 해설
문제로 포켓몬 이름(문자)가 들어오면 포켓몬 번호를 출력해야 하고, 반대로 포켓몬 번호(숫자)가 들어오면 포켓몬 이름을 출력할 수 있어야 하므로 이름, 번호 두 변수를 매칭하고 있어야 하며 두 가지 경우에 대해 각각 출력이 가능하도록 해야 한다. 이를 위해서 dict 형태를 선택하였고 번호를 key로, 이름을 value로 해서 한 번 저장하고 반대로 이름을 key로, 번호를 value로 해서도 저장했다.
'Coding Test > Baekjoon' 카테고리의 다른 글
[백준] 11047번 파이썬 (동전 0) (0) | 2024.03.22 |
---|---|
[백준] 1764번 파이썬 (듣보잡) (0) | 2024.03.22 |
[백준] 11723번 파이썬 (집합) (0) | 2024.03.22 |
[백준] 1654번 파이썬 (랜선 자르기) (0) | 2024.03.21 |
[백준] 2108번 파이썬 (통계학) (0) | 2024.03.21 |