백준1620(파이썬) - 나는야포켓몬마스터이다솜
resilient
·2021. 7. 3. 13:18
728x90
반응형
https://www.acmicpc.net/problem/1620
- 이 문제를 읽고 처음 든 생각은 `해쉬로 풀어야겠다` 였다.
- 먼저 data딕셔너리에 key값에 value를 저장해놓고 맞춰야할 데이터는 quiz 리스트를 만들어서 거기에 담아두었다.
- 파이썬 딕셔너리 구조로 key를 이용해서 value값을 알 수 있지만, value값으로 key값을 알려면 key와 value 위치를 바꿔야 하기 때문에 reversed를 시켜줘서 reverse_data 딕셔너리에 저장해줬다.
- 그리고 맞춰야할 데이터들을 for문을 돌려주면서 만약에 i가 숫자라면 data에서, 문자라면 reverse_data에서 value값을 뽑아올수 있게 하였다.
- 여기서 quiz 안에는 모두 문자열이기 때문에 그냥 쉽게 풀어서 아스키코드로 48~57(숫자 0~9범위) 이면 숫자로, 그 외에는 문자라고 생각해서 풀어줬다.
import sys
input = sys.stdin.readline
# 이문제는 해쉬문제이다.
# 파이썬에서는 딕셔너리로 풀이가능하다.
n,m = map(int,input().split())
data = {}
quiz = []
ans = []
for i in range(n):
data[str(i+1)] = input().rstrip()
for _ in range(m):
quiz.append(input().rstrip())
# key에서 value를 가져오는게 아닌 value에서 key를 가져오기위해
# key와 value위치를 바꿨다.
reverse_data = dict(map(reversed,data.items()))
for i in quiz:
if 48<=ord(i[0])<=57:
ans.append(data.get(str(i)))
else:
ans.append(reverse_data.get(str(i)))
for i in ans:
print(i)
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
백준1309(파이썬) - 동물원 (0) | 2021.07.05 |
---|---|
백준7569(파이썬) - 토마토 (0) | 2021.07.04 |
백준11399(파이썬) - ATM (0) | 2021.07.01 |
백준2636(파이썬) - 치즈 (0) | 2021.06.30 |
백준9461(파이썬) - 파도반 수열 (0) | 2021.06.28 |