공부하기/백준

[Python] 백준 풀기 1620 - 나는야 포켓몬 마스터 이다솜

XEV 2022. 9. 28. 20:15

파이썬 백준 1620번

실버4

https://www.acmicpc.net/problem/1620

 

 

 

문제 보기

N 개의 단어를 입력한 후 이를 사전 삼아

M 번에 걸쳐 답안 요구 조건에 따라 문자인 이름 또는 순서인 숫자를 출력하는 문제이다.

 

 

 

문제 풀기

pokemon_encyclopedia = {} 를 set 으로 지정.

포켓몬의 이름을 하나하나 입력받되

    pokemon_encyclopedia[i] = pkm
    pokemon_encyclopedia[pkm] = i

를 통해 딕셔너리를 작성 시 key, value 를 "순서: 이름" 과 "이름: 순서" 둘 모두 저장.

 

작성된 딕셔너리를 확인해 보고자 중간 프린트해봄.

 

M 번의 for 문을 돌리면서 원하는 답안을 입력받아

그것이 숫자일 때는 포켓몬 이름 문자를 출력하고

그것이 문자일 때는 포켓몬 순서 숫자를 출력함.

 

이때, 입력받은 값이 숫자인지 문자인지 판별을 위해 "isdigit()" 함수를 사용.

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline

N, M = map(int, inputdata().split())
pokemon_encyclopedia = {}

for i in range(1, N + 1):
    pkm = inputdata().strip()
    pokemon_encyclopedia[i] = pkm
    pokemon_encyclopedia[pkm] = i

print(pokemon_encyclopedia)					# 작성된 딕셔너리의 이해를 돕기 위해 프린트해봄.

for _ in range(M):
    answer = inputdata().strip()
    
    if answer.isdigit():
        print(pokemon_encyclopedia[int(answer)])
    else:
        print(pokemon_encyclopedia[answer])



# 26 5
# Bulbasaur
# Ivysaur
# Venusaur
# Charmander
# Charmeleon
# Charizard
# Squirtle
# Wartortle
# Blastoise
# Caterpie
# Metapod
# Butterfree
# Weedle
# Kakuna
# Beedrill
# Pidgey
# Pidgeotto
# Pidgeot
# Rattata
# Raticate
# Spearow
# Fearow
# Ekans
# Arbok
# Pikachu
# Raichu
# 25
# Raichu
# 3
# Pidgey
# Kakuna

# {1: 'Bulbasaur', 'Bulbasaur': 1, 2: 'Ivysaur', 'Ivysaur': 2, 3: 'Venusaur', 'Venusaur': 3, 4: 'Charmander', 'Charmander': 4, 5: 'Charmeleon', 'Charmeleon': 5, 6: 'Charizard', 'Charizard': 6, 7: 'Squirtle', 'Squirtle': 7, 8: 'Wartortle', 'Wartortle': 8, 9: 'Blastoise', 'Blastoise': 9, 10: 'Caterpie', 'Caterpie': 10, 11: 'Metapod', 'Metapod': 11, 12: 'Butterfree', 'Butterfree': 12, 13: 'Weedle', 'Weedle': 13, 14: 'Kakuna', 'Kakuna': 14, 15: 'Beedrill', 'Beedrill': 15, 16: 'Pidgey', 'Pidgey': 16, 17: 'Pidgeotto', 'Pidgeotto': 17, 18: 'Pidgeot', 'Pidgeot': 18, 19: 'Rattata', 'Rattata': 19, 20: 'Raticate', 'Raticate': 20, 21: 'Spearow', 'Spearow': 21, 22: 'Fearow', 'Fearow': 22, 23: 'Ekans', 'Ekans': 23, 24: 'Arbok', 'Arbok': 24, 25: 'Pikachu', 'Pikachu': 25, 26: 'Raichu', 'Raichu': 26}

# Pikachu
# 26
# Venusaur
# 16
# 14