[Baekjoon] 1759번: 암호 만들기 (완전탐색 - 순열과 조합 Gold5) - Python

꼬마요리사레미·2023년 5월 27일

Algorithm

목록 보기
13/41

1. 문제


암호 만들기

2. 풀이


코드
from itertools import combinations

vowels = ['a', 'e', 'i', 'o', 'u']

l, c = map(int, input().split())
arr = input().split('')
arr.sort()

for password in combinations(arr, l):
    count = 0
    for char in password:
        if char in vowels:
            count += 1
    if count >= 1 and count <= l-2:
        print(''.join(password))
입력 및 출력
l, c = 4, 6
arr = a t c i s w

>> acis
   acit
   aciw
   acst
   acsw
   actw
   aist
   aisw
   aitw
   astw
   cist
   cisw
   citw
   istw

3. 로직


  1. 영어 모음들을 나타내는 리스트 vowels를 선언한다.

  2. 사용자로부터 입력을 받아 lc 변수에 할당한다. 이때 입력은 공백으로 구분된 두 개의 정수이다.

  3. 사용자로부터 입력을 받아 arr 변수에 할당한다. 이때 입력은 공백으로 구분된 문자열이다.

  4. arr 리스트를 오름차순으로 정렬한다.

  5. combinations 함수를 사용하여 길이가 larr 리스트의 조합을 생성한다. 각 조합을 password로 받는다.

  6. password의 각 문자에 대해 반복하면서 해당 문자가 vowels 리스트에 포함되어 있는지 확인한다. 포함되어 있다면 count1 증가시킨다.

  7. 모든 문자를 확인한 후, 최소 한 개의 모음과 최소 두 개의 자음으로 구성되어 확인하기 위해 count1 이상이고 l-2 이하인지 확인한다.

  8. 조건을 만족하는 경우, password를 문자열로 변환하여 출력한다.

4. 사용된 함수


join()

join() 함수는 문자열을 연결할 때 구분자로 사용된다.

join() 함수의 기본 구문은 다음과 같다.

구분자.join(리스트)

여기서 구분자는 문자열 연결 시 각 요소 사이에 삽입될 문자열이며, 리스트는 연결하려는 문자열 요소들을 포함하는 리스트이다.

예를 들어, 리스트를 공백으로 구분된 하나의 문자열로 결합하는 방법이다.

코드
my_list = ['Hello', 'world', '!', 'This', 'is', 'join', 'function']
result = ' '.join(my_list)
print(result)
출력
Hello world ! This is join function

위 예제에서 join() 함수는 my_list의 모든 요소를 공백으로 구분하여 하나의 문자열로 결합한다.

따라서, 주어진 코드에서 ''.join(password)password 리스트의 모든 요소를 공백 없이 연결하여 하나의 문자열로 만들어준다.

0개의 댓글