본문 바로가기
백준 풀이

[백준/BOJ] - 1620번 python 풀이 - dict

by 반오십 코린이 2023. 4. 14.
728x90


시간 복잡도가 비교적 적은 딕셔너리를 사용하면 좋은 문제이다.

idx를 통해 포켓몬을 조회할 수 있고

포켓몬을 통해 idx를 조회할 수 있게 

딕셔너리에 값을 반대로도 저장한다.

 

입력값을 확인할 때 숫자로 이루어진 str인지 아닌지를 판별하기 위해

temp.isdigit()

을 활용하였다. 처음 본 문법. 

이전 한화 코딩테스트 때 해당 문법을 알았다면 금방 풀었을 문제가 있었다. 

문자열 처리 문제에서 은근 유용하게 쓰일듯

 

여튼 숫자 str 여부 판별해서 dic에서 값 찾아서 출력하면 끝


통과 case

import sys
input = sys.stdin.readline

n,m = map(int,input().split())#총 포켓몬 수, 문제 수
dic = {}
for i in range(1,n+1):
    a = input().rstrip()
    dic[i] = a
    dic[a] = i

for i in range(m):
    p = input().rstrip()
    if p.isdigit():
        print(dic[int(p)])
    else:
        print(dic[p])



 시간초과 case

아마 value로 key를 뽑아오는 과정에서 시간을 많이 잡아먹는듯 + 형 변환도 비교적 많다.

import sys
input = sys.stdin.readline

n,m = map(int,input().split())#총 포켓몬 수, 문제 수
dic = {0:0}
for i in range(1,n+1):
    dic[str(input().rstrip())] = i
for _ in range(m):
    pb = str(input().rstrip())
    s = pb[0]
    if pb.isdigit():
        print(*[k for k, v in dic.items() if v == int(pb)])
    else:
        print(dic[pb])

 

728x90