Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 1620번- '나는야 포켓몬 마스터 이다솜' (PYTHON 풀이) 본문
문제:

재미있는 문제다. 궁금하면 직접 들어가서 전부 읽어보면 좋을 것 같다 ㅎ (https://www.acmicpc.net/problem/1620)
사용자로부터 입력값 두개를 받고 처음 입력값만큼 포켓몬 이름 사전을 만든다. 그리고 두번째 입력값만큼 지난문제와 동일하게 포켓몬 이름 사전에 해당 내용이 있는지 확인하면 되는데, 이때 값이 영어로 들어올 수도 있고 숫자로 들어올 수도 있기 때문에 둘 다 대비해야한다.
풀이:
N, M = map(int,input().split())
dic1 = {}
dic2 = {}
for i in range(1, N+1):
a = input()
dic1[a] = i
dic2[i] = a
for j in range(M):
b = input()
if b.isdigit():
print(dic2[int(b)])
else:
print(dic1[b])
이름과 숫자가 동시에 테스트 가능해야하기 때문에 문제를 보자마자 딕셔너리를 쓰면 되겠다고 생각했다. 그래서 위와 같이 작성했다.
먼저 딕셔너리를 2개 만들어주고 하나의 딕셔너리는 인덱스값을 키로, 그리고 나머지 딕셔너리는 이름을 키로 하도록 작성한다.
그리고 검사할 수만큼 for문을 도는데 이떄 isdigit()을 쓰면 좀 더 쉽게 해결 가능하다. isdigit() 함수는 입력받는 값이 숫자로만 이루어져 있는지 검사해주는 역할을 한다.
즉, 이 문제에서는 숫자를 키로 갖고 있는 dic2 딕셔너리의 값을 찾는데 유용하다. 그래서 만약 입력값이 수로만 이루어져있다면 dic2의 값을 출력해주고(단 int로 변환해주어야함 이전에는 값이 숫자라 비교가 안됨) 그게 아니라면 숫자가 아닌 값을 키로 갖고있는 dic1의 값을 출력해주면 된다!
'CODING 💻' 카테고리의 다른 글
| 백준 10816번- '숫자 카드 2' (PYTHON 풀이) (0) | 2025.10.16 |
|---|---|
| 백준 1764번- '듣보잡' (PYTHON 풀이, 문제 해석 O) (0) | 2025.10.15 |
| 백준 14425번- '문자열 집합' (PYTHON 풀이) (0) | 2025.10.13 |
| 백준 7785번- '회사에 있는 사람' (PYTHON 풀이) (0) | 2025.10.12 |
| 백준 10815번- '숫자 카드' (PYTHON 풀이) (0) | 2025.10.11 |
