본문 바로가기

Problem Solving/백준BOJ

[백준BOJ] 17219번 비밀번호 찾기.py

728x90
반응형
SMALL

백준 저지에서 비밀번호 찾기를 파이썬을 통해 풀어 보았다. 

 

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

 

17219번: 비밀번호 찾기

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

www.acmicpc.net

17219번 비밀번호 찾기.py

 

tomy9729/Algorithm

🐗 내가 직접 작성한 내 코드 🐗. Contribute to tomy9729/Algorithm development by creating an account on GitHub.

github.com

 

 

17219번 비밀번호 찾기

문제

2019 HEPC - MAVEN League의 "비밀번호 만들기"와 같은 방식으로 비밀번호를 만든 경민이는 한 가지 문제점을 발견하였다. 비밀번호가 랜덤으로 만들어져서 기억을 못 한다는 것이었다! 그래서 경민이는 메모장에 사이트의 주소와 비밀번호를 저장해두기로 했다. 하지만 컴맹인 경민이는 메모장에서 찾기 기능을 활용하지 못하고 직접 눈으로 사이트의 주소와 비밀번호를 찾았다. 메모장에 저장된 사이트의 수가 늘어나면서 경민이는 비밀번호를 찾는 일에 시간을 너무 많이 쓰게 되었다. 이를 딱하게 여긴 문석이는 경민이를 위해 메모장에서 비밀번호를 찾는 프로그램을 만들기로 결심하였다! 문석이를 도와 경민이의 메모장에서 비밀번호를 찾아주는 프로그램을 만들어보자.

설명

각 사이트는 중복되지 않으며 사이트마다 비밀번호가 존재한다. 사이트가 입력되었을 때 비밀번호를 빠르게 출력해야한다. 

 

사이트가 중복되지 않는 다는 점에서 바로 Dictionary를 사용해야겠다고 생각했다. Dictionary에서 ket에 대해 value를 찾는 시간은 O(1)이기 때문에 이보다 빠른 방법은 없다.

 

입력받은 site와 password를 Dictionary에 저장하고 입력받은 site에 따라 Dictionary에서 password를 찾아 출력한다.

코드

#17219번 비밀번호 찾기
if __name__ == "__main__":
  n,m = map(int,input().split())
  program = {}
  for _ in range(n) :
    site,password = input().split()
    program[site] = password
  for _ in range(m) : 
    key = input()
    print(program[key])
728x90
반응형
SMALL