[백준] 1759번 - Swift

이창형·2023년 6월 9일
0

코드

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 {
    	// 자음 1개이상인지 체크
        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도 할만하다
  • 진짜 너무 뿌듯하다
  • 진짜 막막했는데 점점 풀리니 기분좋다
profile
iOS Developer

0개의 댓글