1759: 암호 만들기

ewillwin·2023년 5월 2일
0

Problem Solving (BOJ)

목록 보기
38/230

  • letter list를 오름차순으로 sorting
  • 오름차순으로 dfs 순회
  • len(visit) == L일 때, 모음 최소 하나, 자음 최소 두개 조건을 만족하는 경우에 print
import sys

tmp = list(map(int, sys.stdin.readline()[:-1].split(' '))); L = tmp[0]; C = tmp[1]
letter = sys.stdin.readline()[:-1].split(' ')
letter.sort()
visit = []; check = {'a', 'e', 'i', 'o', 'u'}

def dfs(flag):
    if len(visit) == L:
        cnt1 = 0; cnt2 = 0
        for j in range(L):
            if visit[j] in check:
                cnt1 += 1
            else:
                cnt2 += 1
        if cnt1 >= 1 and cnt2 >= 2:
            print("".join(map(str, visit)))
        return
    for i in range(flag, C):
        if letter[i] not in visit:
            visit.append(letter[i])
            dfs(i)
            visit.pop()

dfs(0)
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글