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)