코드
let input = readLine()!.split(separator: " ").map{Int($0)!}
let n = input[0]
let m = input[1]
var visited = [String:Bool]()
var arr = readLine()!.split(separator: " ").map{String($0)}
let na = ["b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z"]
for i in arr {
visited[i] = false
}
arr.sort()
func dfs(_ length: Int, _ stack: [String]) {
if length == n {
if (stack.contains("a") || stack.contains("e") || stack.contains("i") || stack.contains("o") || stack.contains("u")) {
var count = 0
for i in stack {
if na.contains(i) {
count += 1
}
}
if count > 1 {
print(stack.joined(separator: ""))
return
}
}
return
}
for i in arr {
if !(visited[i]!) && ((stack.last ?? "a") <= i) {
visited[i] = true
dfs(length+1, stack + [i])
visited[i] = false
}
}
}
dfs(0, [])
회고
- 이제 재귀는 골드5도 할만하다
- 진짜 너무 뿌듯하다
- 진짜 막막했는데 점점 풀리니 기분좋다