얼렁뚱땅 백준 문제풀이

[백준 문제풀이] 얼렁뚱땅 1759 암호 만들기 풀이

MOSTAR 2022. 9. 30. 01:52

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

 

1759번: 암호 만들기

첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.

www.acmicpc.net

 

# 서로 다른 L개의 알파벳 소문자가 비번
# 최소 한개의 모음 포함, 두개의 자음 구성
# 암호는 증가하는 순서대로
# C개의 문자 중에 구성 되어 있을 것임
l, c = map(int,input().split())
arr = list(input().split())


arr.sort()


mo = ['a','e','i','o','u']
answer = []

def dfs(idx, str_) :
    global answer
    sign_mo = 0
    sign_ja = 0
    if len(str_) == l :
        for i in range(l) :
            if (str_[i] in mo):
                sign_mo += 1
            else:
                sign_ja += 1
            
            if (sign_ja >= 2) and (sign_mo >= 1):
                answer.append(str_)
                break
        return

    for i in range(idx+1,c) :
        temp = str_ + arr[i]
        dfs(i, temp)

    

for k in range(c) :
    dfs(k,arr[k])

answer.sort()
for i in range(len(answer)) :
    print(answer[i])

솔직히 말해서 answer.sort() 이거 왜 해줘야하는지 살짝쿵바리 이해가 안되는데

그냥 의심되면 해줘야겠다

저 한줄때매 시간 마니썻네 ㅡ3ㅡ 알고리즘은 금방 짯는데 흥 ㅡ3ㅡ

이것도 의도는 안했지만 백트레킹문제

후하 배터리 16% 안에 풀기 완료 그럼 뾰로롱