문제 출처 : www.acmicpc.net/problem/17219 Show 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 문제 해석 : 저장한 비밀번호를 찾아 이를 출력하는 문제이다. 문제 풀이 : 간단한 딕셔너리 활용 문제이다. 저장을 딕셔너리로 하고 사이트를 키값으로 지정해 주면 된다. 풀이 코드
author : donghak park ## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다. 비밀번호 생성기를 파이썬으로 만들어보자. for문, random함수, random.shuffle(), random.sample(), list(), input(), int(), +=연산자, f-string 등 많은 파이썬 함수들이 쓰인다. <사용할 문자, 특수기호, 숫자는 아래와 같다> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] 비밀번호 생성기의 규칙1. 비밀번호에서 문자, 특수기호, 숫자의 개수가 얼마나 되는지 입력을 받는다. 1단계 비밀번호 생성하기1. input()함수, int()함수먼저 input()함수를 사용하여 입력값을 얻는다. input()함수의 출력값은 str타입이므로, int()함수를 적용하여 문자형을 숫자형으로 변경한다. 2-1. random.sample(seq, k) 함수random.sample(seq, k) 함수를 이용하여 seq > 리스트나 튜플 같은 시퀀스(순서)가 있는 것에서 k만큼 원소를 랜덤하게 뽑는다. 이 경우에는 뽑히는 원소들은 중복되지 않는다. 예를 들어, [1,2,3]에서 2개를 랜덤하게 뽑을 때, 1,2 2,3 1,3 이 뽑힐 수 있지만 1,1 2,2 3,3 등 같은 원소를 중복해서 뽑지는 않는다. for 반복문, += 연산자for문을 이용해서 리스트의 요소를 하나의 문자열로 합친다. one+=b의 뜻은 one = one +b 와 같다. 문자열 + 문자열의 최종 출력값의 타입은 문자열이다. 2-2. random.choice(seq) 함수만약 비밀번호에 중복된 문자, 특수기호, 숫자가 있기를 원한다면, random.choice()함수와 for문을 이용하면 된다. random.choice()함수는 순서 sequence가 있는 리스트나 튜플에서 하나의 원소를 뽑아준다. 3. f-stringf-string을 이용해서 문장을 출력한다. 2단계 비밀번호 생성하기4. list()1단계 비밀번호를 무작위로 섞기 위해 random.shuffle()함수를 쓸 것인데, 섞을 대상이 문자열이 아닌 리스트의 형태여야 한다. 따라서 문자열 타입인 1단계 비밀번호를 list()함수를 이용해 다시 리스트로 바꾸어준다. split()함수는 여러개의 문자열을 어떤 기준으로 쪼개어 리스트를 만들어주고 list()함수는 문자열을 각각의 문자로 쪼개어 리스트를 만들어준다. 5. random.shuffle()6. for문, f-string 출력하기 |