상세 컨텐츠

본문 제목

[백준/파이썬]1620번 나는야 포켓몬 마스터 이다솜

알고리즘 문제풀이

by 한백인데용 2023. 6. 6. 19:14

본문

728x90
반응형

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

 

1620번: 나는야 포켓몬 마스터 이다솜

첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면

www.acmicpc.net

 

N개의 포켓몬 이름을 입력받고

 

M개의 찾을 포켓몬 이름 혹은 인덱스 번호를 입력하면 인덱스 혹은 이름을 출력해 주면 되는 문제다.

 

정답

import sys

n, m = map(int, input().split())

pokemon_int = {}
pokemon_string = {}

for i in range(0, n , 1) :
    pokemon_int[i] = sys.stdin.readline().rstrip()
pokemon_string = {v : k for k, v in pokemon_int.items()}

for i in range(0, m, 1) :
    q = sys.stdin.readline().rstrip()
    if q.isdigit() :
        print(pokemon_int[int(q)-1])
    else :
        print(pokemon_string[q]+1)

 

오답

import sys

n, m = map(int, input().split())

pokemon = []
for i in range(0, n , 1) :
    pokemon.append(sys.stdin.readline().rstrip())

for i in range(0, m, 1) :
    q = sys.stdin.readline().rstrip()
    if q.isdigit() :
        print(pokemon[int(q)-1])
    else :
        print(pokemon.index(q)+1)

이건 오답

 

처음엔 아무 생각 없이 리스트로 문제를 풀었었는데, 입력 받는 M, N이 각각 100,000개까지 입력받을 수 있다 보니 리스트로 풀면 시간초과가 난다.

 

그래서 딕셔너리로 문제를 풀었다.

 

딕셔너리에 각각 

pokemon_int에는 index를 key값으로, 포켓몬 이름을 value값으로 주고

pokemon_string에는 이와 반대로 저장했다.

 

이렇게 하면 숫자를 입력받으면 해당 key값의 value를 출력해주면 되고

포켓몬의 이름을 입력받으면 똑같이 해당 key값의 value를 출력해주면 된다.

 

 


이런 방법이 있는지 처음알았다 ㅋㅋ 리스트를 사용하면 값을 찾기 위해 하나하나 찾아야 하지만 딕셔너리는 key값이 따로 있으니 아주 좋은 방법인 것 같다.

 

index와 value값으로 해결해야 하는 문제는 앞으로 딕셔너리를 사용해서 풀어야겠다.

728x90
반응형

관련글 더보기