알고리즘 스터디 - 백준 1620번 : 나는야 포켓몬 마스터 이다솜

김진성·2022년 1월 6일
0

Algorithm 문제풀이

목록 보기
38/63

문제 해석

다솜이가 가지고 있는 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 보면 포켓몬의 이름을 말하는 연습을 하고 통과하면 새로운 도감을 받는다.

입력

  1. 포켓몬의 개수 N, 내가 맞춰야 하는 개수 M
  2. N개의 줄에 1부터 N까지 해당되는 포켓몬이 생성되는데 대소문자가 섞여있다. 이름 길이는 최대 20, 최소 2이다.
  3. M개의 줄에 문제 입력이 들어오면 번호를 얘기하고 숫자가 오면 해당하는 문자를 출력한다.

알고리즘 코드

처음 작성했던 코드

  • 이 경우 시간초과가 발생했다. Value를 통해서 Key값을 호출하는 것이 애매해서 다른 방식을 사용해보자.
from collections import defaultdict

N, M = map(int, input().split())

pocketmon = defaultdict(int)

for i in range(1, N+1):
    monster = input()
    pocketmon[monster] = i

for _ in range(M):
    question = input()
    if pocketmon[question]:
        print(pocketmon[question])
    else:
        print(list(pocketmon.keys())[list(pocketmon.values()).index(int(question))])

PyPy3만 통과한 코드

N, M = map(int, input().split())

pocket = []
pocketmon = {}

for i in range(1, N+1):
    monster = input()
    pocket.append(monster)
    pocketmon[monster] = i

for _ in range(M):
    question = input()
    if question.isalpha():
        print(pocketmon[question])
    else:
        print(pocket[int(question) - 1])
profile
https://medium.com/@jinsung1048 미디엄으로 이전하였습니다.

0개의 댓글