-
[Python][백준] 17219번 비밀번호 찾기 문제 풀이Algorithm/백준 2022. 3. 19. 10:00728x90
이 문제는 자료구조와 해시를 사용한 집합과 맵이 핵심 개념이다.
이 문제를 풀때, 일반적인 리스트로 풀면 시간초과의 늪에 빠질 것이다.
이 때 사용해야 할것이 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'Algorithm > 백준' 카테고리의 다른 글
[Python][백준] 2579번 계단 오르기 풀이 | DP는 정말 어려워 (0) 2022.03.24 [백준] solved.ac 기록 정리 (0) 2022.03.19 [Python][백준] 11723번 집합 문제 풀이 | 비트마스킹이 뭐여 (0) 2022.03.16 [Python][백준] 9095번 문제 1, 2, 3 더하기 해결 | DP는 어려워 (0) 2022.03.12 [Python][백준] 1260번 DFS와 BFS | 런타임 에러 (KeyError) 해결 (0) 2022.03.10