Algorithm

[Swift 백준] 15650 N과 M (2)

Kim Roks 2025. 1. 8. 19:28

풀이 아이디어

  • 백트래킹을 이용하는 문제입니다.
  • resultArr의 길이에 조건을 두어 불필요한 탐색을 방지합니다.
  • 한 경로를 탐색한 후 removeLast()를 호출하여 상태를 복구하고 다른 경로를 탐색합니다.

풀이

import Foundation

let input = readLine()!.split(separator: " ").map{ Int($0)! }

let n = input[0]
let m = input[1]

var resultArr: [Int] = []

func dfs(_ start: Int) {
    if resultArr.count == m {
        print(resultArr.map { String($0) }.joined(separator: " "))
        return
    }
    // outOFIndex방지
    if start > n { return }

    for i in start...n {
        resultArr.append(i)
        dfs(i + 1)
        resultArr.removeLast()
    }
}
dfs(1)