728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 포켓몬 도감을 저장하여 해당 문제가 나오면 도감에 있는 정보를 정확하게 맞추는 문제이다.
문제는 포켓몬의 이름과 번호, 두 가지 방식으로 나올 수 있으므로 딕셔너리 두 개를 사용해 각각 이름과 번호를 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)
- 문제를 입력받고 data = sys.stdin.readline().rstrip()
- 만약 문제가 숫자로 들어오면 if (data.isdecimal())
- 번호가 key로 저장되어 있는 딕셔너리에서 해당 포켓몬의 이름을 출력한다. print(d1[int(data)])
- 반면에 문제가 포켓몬의 이름으로 들어오면 else
- 이름이 key로 저장되어 있는 딕셔너리에서 해당 포켓몬의 번호를 출력한다. print(d2.get(data))
반응형
3. 소스코드
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):
data = sys.stdin.readline().rstrip()
if (data.isdecimal()):
print(d1[int(data)])
else:
print(d2.get(data))
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 13241번 : 최소공배수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.25 |
---|---|
[백준] 11478번 : 서로 다른 부분 문자열의 개수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.24 |
[백준] 1269번 : 대칭 차집합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.23 |
[백준] 1764번 : 듣보잡 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.22 |
[백준] 7785번 : 회사에 있는 사람 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.20 |
[백준] 14425번 : 문자열 집합 - 파이썬(Pyton) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.19 |
[백준] 10815번 : 숫자 카드 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.18 |
[백준] 18870번 : 좌표 압축 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.16 |