링크 : https://www.acmicpc.net/problem/1620
1620번: 나는야 포켓몬 마스터 이다솜
첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면
www.acmicpc.net
- 문제
- 소요시간: 25분 41초
- 설계하기(접근방법)
1. 도감과, 검색횟수 m, n을 입력받는다
2. 도감을 입력받아 딕셔너리를 생성한다
pockemon.setdefault('%d' % (i), x)
setdefault() 함수를 통해 키값과 몬스터의 이름을 하나씩 입력한다
pockemon_reverse = {v: k for k, v in pockemon.items()}
다음과 같은 형태로 키와 밸류가 뒤집어진 딕셔너리를 생성한다.
3. 숫자 혹은 문자열을 입력받아 도감에서 검색하여 출력한다.
1)
if k.isdigit() == True:
print(pockemon['%d' % (int(k))])
입력받은 값이 숫자라면 숫자를 기준으로 몬스터의 이름을 찾고
2)
else:
print(pockemon_reverse[k])
문자열이라면 리버스 리스트에서 몬스터의 이름을 기준으로 키 값을 찾아 출력한다.
- 코드(출력)
import sys
n, m = map(int, input().split())
pockemon = {}
for i in range(1, n+1):
x = sys.stdin.readline().rstrip()
pockemon.setdefault('%d' % (i), x)
pockemon_reverse = {v: k for k, v in pockemon.items()}
for i in range(m):
k = sys.stdin.readline().rstrip()
if k.isdigit() == True:
print(pockemon['%d' % (int(k))])
else:
print(pockemon_reverse[k])
- 얻어갈 부분
1. 딕셔너리의 생성방법을 배웠다.
2. 딕셔너리의 키값으로 밸류 불러오기, 밸류로 키 값 불러오기를 배웠다
3. 키와 밸류가 리버스된 리스트를 어떻게 생성하는지 배웠다
4. setdedault()메서드의 사용법을 배웠다.
5. isdigit() 메서드를 통해 문자열과 숫자를 구분하는 메서드를 배웠다.
'알고리즘(백준) > 자료구조' 카테고리의 다른 글
[알고리즘/자료구조] 11279번 : 최대 힙 - python (0) | 2023.03.15 |
---|---|
[알고리즘/자료구조] 14425 번 : 문자열 집합 - python (0) | 2023.03.14 |
[알고리즘/자료구조] 2800번 : 괄호제거 - python (0) | 2023.03.11 |
[알고리즘/자료구조] 1874번 : 스택 수열 - python (0) | 2023.03.10 |
[알고리즘/자료구조] 2346 번 : 풍선 터뜨리기 - python (0) | 2023.03.08 |