chyam

[백준] 1759번, python - 암호 만들기 본문

백준

[백준] 1759번, python - 암호 만들기

chyam_eun 2026. 3. 5. 10:57

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

# 처음 풀이 

l, c = map(int,input().split())
alp = list(input().split())
alp.sort()
tmp = []
v = ['a','e','i','o','u']

visited = [False] * len(alp)

def dfs(li):
    if len(li) == l:
        tmp.append(li)
        return
    
    for a in range(len(alp)):
        if not visited[a]:
            visited[a] = True
            if len(li) == 0 or len(li) > 0 and li[-1] <= alp[a]: # 역순안되도록..
                dfs(li+[alp[a]])
            visited[a] = False

dfs([])

for l in tmp:
    v_cnt = 0
    w_cnt = 0
    for i in l:
        if i in v:
            v_cnt += 1
        else:
            w_cnt += 1
    if v_cnt >= 1 and w_cnt >=2: # 모음 1개이상 자음 2개이상
        print(''.join(l))
# 지피티한테 정리해달라한 풀이

l, c = map(int, input().split())
alp = sorted(input().split())

vowels = {'a', 'e', 'i', 'o', 'u'}

def dfs(start, path):
    if len(path) == l:
        v_cnt = 0
        for ch in path:
            if ch in vowels:
                v_cnt += 1
        
        if v_cnt >= 1 and l - v_cnt >= 2: # 모음 1개이상 자음 2개이상
            print(''.join(path))
        return

    for i in range(start, c): # 역순이 안되도록 
        dfs(i + 1, path + [alp[i]])
        

dfs(0, [])