백준_1620번

정소담·2023년 2월 12일
0

BOJ Short Review

목록 보기
32/44
post-thumbnail

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

N줄의 포켓몬이 도감에 등록되고 M개의 문제가 제출 된다.
도감 등록 후 문제는 포켓몬 번호 혹은 포켓몬의 이름이 주어지고
번호가 주어지면 포켓몬의 이름을, 포켓몬의 이름이 주어지면 번호를 출력하는 문제. (포켓몬 번호는 등록순)

import sys
input = sys.stdin.readline

n,m = map(int,input().split())
mon = {} 
mon2 = {}

for i in range(1,n+1): # 해당 문제는 입력 문자끝에 개행문자가 붙어있다.
    p = input().rstrip('\n') # 개행 문자를 제외하고 입력해줬다.
    mon[str(i)] = p # 입력을 문자로 받기 위해 str로 변환했다.
    mon2[p] = i # 입력이 포켓몬 번호 혹은 포켓몬 이름이라서
# 포켓몬 번호 = 포켓몬 이름/ 포켓몬 이름 = 포켓몬 번호 두개의 딕셔너리를 만들어 줬다.
for i in range(m):
    s = input().rstrip('\n') # 마찬가지로 개행제외
    print(mon.get(s,mon2.get(s))) # 입력 값이 포켓몬 번호이면 mon에서 get 
    # 입력 값이 mon 딕셔너리 key 들 중에 없다면 mon2 딕셔너리에서 get 

처음에 리스트와 인덱스를 사용했지만 시간초과가 났고
계산 시간을 줄이기 위해 딕셔너리를 사용했다.
딕셔너리 .get(k,v) 의 시간 복잡도는 O(1)이고 찾는 k 값이 없을 경우 v를 반환하는 특징을 활용해서 풀이해 봤다.

profile
Hi ! I'm newbie :)

0개의 댓글