Koala - 11기/기초 알고리즘 스터디

[백준/Python] 12719번: 비밀번호 찾기

יוֹסֵף 2023. 7. 23. 23:15

https://www.acmicpc.net/problem/17219

 

17219번: 비밀번호 찾기

첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번

www.acmicpc.net



문제 해석

저장된 사이트 주소의 수 N  비밀번호를 찾으려는 사이트 주소의 수 M 를 입력하여 찾고 싶은 주소의 비밀번호를 출력하는 문제이다. 찾으려는 주소를 차례대로 하나씩 출력하면 된다.


코드

N, M = map(int, input().split())
c = dict()
for i in range(N + M):
    if i < N:
        a, b = map(str, input().split())
        c[a] = b
    else:
        print(c[str(input())])

 

N, M = map(int, input().split())
c = dict()
for i in range(N):
    a, b = map(str, input().split())
    c[a] = b
print(*[c[str(input())] for i in range(M)], sep='\n')

문제풀이

제일 처음 방법으로는 첫 번째 방법으로 풀이를 진행했다. n과 m을 입력 받고 출력을 딕셔너리 자료구조로하여 각 각의 주소에 대응하는 비밀번호 value 값을 지정하는 방법으로 진행했다. 그치만 입력값이 N(1 ≤ N ≤ 100,000)과 M(1 ≤ M ≤ 100,000) 의 범위를 가지기 때문에 첫 번째 코드의 시간 복잡도는 N+M으로 최대 200,000이 된다.

따라서 시간 소요를 더 줄일 방법을 고민하여 두 번째 코드와 같은 형식으로 시간 복잡도를 줄일 수 있었다.