코딩테스트
백준 1620 : 나는야 포켓몬 마스터 이다솜
Astero
2025. 3. 6. 16:13
728x90
해당 문제는 포켓몬 도감을 저장해 해당 문제가 나올때 도감에 있는 정보를 정확하게 맞추면 되는 문제였다.
문제는 포켓몬의 이름과 번호, 두 가지 방식으로 나올 수 있었고, 이를 각각의 딕셔너리로 이름과 번호를 key로 하여 정보를 저장했다.
저장한 정보를 바탕으로 문제 번호가 나왔을 경우와 이름으로 나왔을 경우를 판단해 해당 정보를 딕셔너리 내에서 찾아서 출력하는 식으로 진행했다.
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러왔다. -> import sys
- 도감에 등록된 포켓몬의 개수와 맞춰야 하는 문제의 개수를 입력받는다. -> N, M = map(int, sys.stdin.readline().split())
- 번호를 key로 저장하는 딕셔너리 생성 -> d1 = {}
- 포켓몬 이름을 key로 저장하는 딕셔너리 생성 -> d2 = {}
- 도감에 수록된 포켓몬 수만큼 반복 진행 -> for i in range(N):
- 포켓몬의 이름을 받음 -> name = sys.stdin.readline().rstrip()
- 해당 번호를 key로 하는 딕셔너리에 이름 저장 -> d1[i + 1] = name
- 해당 포켓몬 이름을 key로 하는 딕셔너리에 번호를 각각 저장 -> d2[name] = i + 1
- 맞춰야 하는 문제의 개수만큼 반복해줌 -> for _ in range(M):
- 문제 입력받음 -> dd = sys.stdin.readline().rstrip()
- 만약 문제가 숫자로 들어오면 -> if (dd.isdecimal()):
- 해당 번호가 key로 저장되어 있는 딕셔너리에서 해당 포켓몬 이름 출력 -> print(d1[int(dd)])
- 만약 문제가 있는 포켓몬 이름 들어올시(숫자로 안들어옴) -> else:
- 이름이 key로 저장된 딕셔너리 내에서 해당 포켓몬의 번호를 출력 -> print(d2.get(dd))
최종 코드
import sys N, M = map(int, sys.stdin.readline().split()) d1 = {} d2 = {} for i in range(N): name = sys.stdin.readline().rstrip() d1[i + 1] = name d2[name] = i + 1 for _ in range(M): dd = sys.stdin.readline().rstrip() if (dd.isdecimal()): print(d1[int(dd)]) else: print(d2.get(dd)) |
728x90