⚽ 서론
dict() 형 그러니까 해시를 사용한 집합과 맵에서 새로운 걸 발견해서 글로 남기기로 했다!
🧩문제 해석
포켓몬 이름을 받은 뒤 받은 순서대로 포켓몬 도감에 저장한다. 포켓몬 이름을 문제로 냈을 때 그 포켓몬이 몇번째로 도감에 등록됐는지 출력하고, 수를 입력했을 때는 그 수의 등록된 포켓몬 이름을 출력하면 되는 문제
(걸그룹 마스터 문제랑 비슷한 유형이다)
📖 풀이
처음에는 포켓몬 이름을 입력받으면 key에는 이름을, value에는 수를 저장한 다음
문제를 맞출 때 이름이 들어오면 포켓몬도감[이름] 이런식으로 출력하면 됐지만 수가 입력될 때는 값을 하나하나 찾아야 했다. 즉 key가 입력되면 바로 찾을 수 있지만 value가 입력되고 key 값을 찾으려면 하나하나 다 돌아야 했었다. value를 입력했을 때 바로 key를 출력해줄 함수를 찾지 못했었다. 어찌보면 당연한 말이다. 예를 들어 우리도 만약 전기라는 의미를 찾기위해 사전을 보면 ㄱ,ㄴ,ㄷ 순으로 쭉 찾아가 전기의 뜻을 찾을 수 있다. 하지만 반대로 "전하의 존재 및 흐름과 관련된 물리현상들의 총체이다."라는 의미를 가진 단어를 찾는 것은 하나하나 다 돌아봐야 한다. ㅋㅋㅋ 이런 방법으로 하니 시간 초과가 나왔다.
해결 방법은 간단하다! 뜻도 사전에 등록해두는 것이다.
{"전기" : "전하의 존재 및 흐름과 관련된 물리현상들의 총체이다", "전하의 존재 및 흐름과 관련된 물리현상들의 총체이다" : "전기"} 이렇게 둘다 찾을 수 있게 저장하는 방법이다. 이런 방법을 사용하니 시간초과가 해결되었다.
💻 코드
import sys
input = sys.stdin.readline
n, m = map(int, input().rstrip().split())
poketmon = dict()
for i in range(1, n+1):
name = input().rstrip()
poketmon[name] = i
poketmon[str(i)] = name
for j in range(m):
guess = input().rstrip()
print(poketmon[guess])
문제 : 나는야 포켓몬 마스터 이다솜
'Problem Solving > 백준' 카테고리의 다른 글
[백준] 1193번: 분수찾기 - 파이썬 (0) | 2022.05.05 |
---|---|
[백준] 17478번: 재귀함수가 뭔가요? - 파이썬 (2) | 2022.05.04 |
[백준] 1495번: 기타리스트 - 파이썬 (0) | 2022.05.02 |
[백준] 2023번: 신기한 소수 (0) | 2022.05.02 |
[백준] 🥳200문제 달성!🥳 (0) | 2022.05.01 |