알고리즘 문제 풀기/백준(Baekjoon)
[백준 알고리즘]1759.암호만들기 - 파이썬
hibscus
2021. 3. 25. 23:59
중복되지 않는 조합을 찾는 문제라 재귀를 사용하여 풀었다.
자음과 모음의 개수도 암호를 만드는 데 필요한 조건이라 추가적으로 자음과 모음의 개수도 함께 인자로 전달했다!
조합이 익숙해지니, 이런 문제는 오히려 고마워졌다..ㅎㅎ
import sys
# 중복되지 않는 조합, 정렬하기
def make_password(idx, start, vowels, consonants):
if idx == l:
if vowels >= 1 and consonants >= 2:
print("".join(map(str, password)))
return
for i in range(start, c):
password[idx] = chars[i]
if chars[i] in ['a', 'e', 'i', 'o', 'u']:
vowels += 1
make_password(idx+1, i+1, vowels, consonants)
vowels -= 1
else:
consonants += 1
make_password(idx+1, i+1, vowels, consonants)
consonants -= 1
l, c = map(int, sys.stdin.readline().split())
chars = list(sys.stdin.readline().split())
chars.sort()
password = [0] * l
make_password(0, 0, 0, 0)
처음에 만족하는 자음과 모음의 개수 조건을 보지 않아서 틀렸는데,
제출하기 전에 문제를 다시 한번 읽고, 반례도 대입해본뒤 제출해보자!