17219번: 비밀번호 찾기
첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번
www.acmicpc.net
문제
2019 HEPC - MAVEN League의 "비밀번호 만들기"와 같은 방식으로 비밀번호를 만든 경민이는 한 가지 문제점을 발견하였다. 비밀번호가 랜덤으로 만들어져서 기억을 못 한다는 것이었다! 그래서 경민이는 메모장에 사이트의 주소와 비밀번호를 저장해두기로 했다. 하지만 컴맹인 경민이는 메모장에서 찾기 기능을 활용하지 못하고 직접 눈으로 사이트의 주소와 비밀번호를 찾았다. 메모장에 저장된 사이트의 수가 늘어나면서 경민이는 비밀번호를 찾는 일에 시간을 너무 많이 쓰게 되었다. 이를 딱하게 여긴 문석이는 경민이를 위해 메모장에서 비밀번호를 찾는 프로그램을 만들기로 결심하였다! 문석이를 도와 경민이의 메모장에서 비밀번호를 찾아주는 프로그램을 만들어보자.
입력
첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다.
두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번호가 공백으로 구분되어 주어진다. 사이트 주소는 알파벳 소문자, 알파벳 대문자, 대시('-'), 마침표('.')로 이루어져 있고, 중복되지 않는다. 비밀번호는 알파벳 대문자로만 이루어져 있다. 모두 길이는 최대 20자이다.
N+2번째 줄부터 M개의 줄에 걸쳐 비밀번호를 찾으려는 사이트 주소가 한줄에 하나씩 입력된다. 이때, 반드시 이미 저장된 사이트 주소가 입력된다.
출력
첫 번째 줄부터 M개의 줄에 걸쳐 비밀번호를 찾으려는 사이트 주소의 비밀번호를 차례대로 각 줄에 하나씩 출력한다.
과정
- 저장된 사이트 주소의 수와, 찾으려는 사이트 주소의 수를 입력받는다.
- 저장을 딕셔너리로 하고 사이트를 키값으로 지정해 주면 된다.
예제 입력
16 4
noj.am IU
acmicpc.net UAENA
startlink.io THEKINGOD
google.com ZEZE
nate.com VOICEMAIL
naver.com REDQUEEN
daum.net MODERNTIMES
utube.com BLACKOUT
zum.com LASTFANTASY
dreamwiz.com RAINDROP
hanyang.ac.kr SOMEDAY
dhlottery.co.kr BOO
duksoo.hs.kr HAVANA
hanyang-u.ms.kr OBLIVIATE
yd.es.kr LOVEATTACK
mcc.hanyang.ac.kr ADREAMER
startlink.io
acmicpc.net
noj.am
mcc.hanyang.ac.kr
예제 출력
THEKINGOD
UAENA
IU
ADREAMER
풀이
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
result = {}
for _ in range(N):
site, psw = input().split()
result[site] = psw
for _ in range(M):
print(result[input().rstrip()])
한 줄씩 해석해보기
import sys
input = sys.stdin.readline
- 반복문을 통해 여러줄을 입력 받아야 하기 때문에 sys.stdin.readline을 이용
- 시간초과를 방지하기 위해서이다.
N, M = map(int, input().split())
result = {}
- 저장된 사이트 주소의 수 N과, 찾으려는 사이트 주소의 수 M을 입력받는다.
- 결과값을 저장할 딕셔너리를 만들어준다.
for _ in range(N):
site, psw = input().split()
result[site] = psw
- N의 개수만큼 사이트와 비밀번호를 입력받고 site를 키값으로 result 딕셔너리에 비밀번호를 저장해준다.
for _ in range(M):
print(result[input().rstrip()])
- 사이트 주소를 입력받고 키값으로 패스워드를 찾는다.
- input().rstrip을 사용하는 이유: sys.stdin.readline을 사용할 때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주어야 한다. https://www.acmicpc.net/problem/15552
'코딩 테스트 (Python) > 백준' 카테고리의 다른 글
[백준] 2309번 일곱 난쟁이 (Python) (1) | 2024.01.05 |
---|---|
[백준] 10870번 피보나치 수 5 (Python) (1) | 2024.01.05 |
[백준] 1920번 수 찾기 (Python) (1) | 2024.01.05 |
[백준] 2460번 지능형 기차2 (Python) (0) | 2024.01.04 |
[백준] 10818번 최소, 최대 (Python) (0) | 2024.01.04 |