Algorithm/백준
[Python][백준] 17219번 비밀번호 찾기 문제 풀이
이무기뱀술
2022. 3. 19. 10:00
728x90
이 문제는 자료구조와 해시를 사용한 집합과 맵이 핵심 개념이다.
이 문제를 풀때, 일반적인 리스트로 풀면 시간초과의 늪에 빠질 것이다.
이 때 사용해야 할것이 Python의 dictionary 자료구조이다. (c++, java의 map)
dictionary는
키(key)와 값(value)이 쌍을 이루는 자료구조로, 순서와 상관없이 키 값으로 한 번에 값을 불러올 수 있다.
dictionary는 해시로 이루어져있기 때문에, 값을 불러 올 때의 시간복잡도는 O(1)이다.
이를 코드로 구현하면 다음과 같다.
import sys
def P17129():
n1, n2 = map(int, input().split())
# 사이트의 주소와 비밀번호 입력
sites = {}
for _ in range(n1):
s, p = input().split()
sites[s] = p
for _ in range(n2):
print(sites[input().strip()])
if __name__ == '__main__':
input = sys.stdin.readline
P17129()
위 코드는 아래와 같이 더 간단하게 표현할 수 있다.
import sys
input = sys.stdin.readline
n1, n2 = map(int, input().split())
sites = dict(input().split() for _ in range(n1))
print(*list(sites[input().strip()] for _ in range(n2)), sep='\n')
728x90