백트래킹

인생노잼시기·2021년 8월 1일
0

😨코딩테스트

목록 보기
15/18

15649

15649 N과 M(1)

import Foundation

let data = readLine()!.split(separator: " ").map { Int(String($0))! }
let n = data[0] //1~n까지의 자연수 중
let m = data[1] //중복 없이 m개 고른 수열

var isUsed = [Bool](repeating: false, count: n+1)   //사용여부
var arr = [Int](repeating: 0, count: m) //순열

func backTracking(_ digit: Int) {
    
    guard digit < m else {
        print(arr.reduce(into: "", { $0 += "\($1) " })) //String으로 바꿔주려고 into: ""
        return
    }
    
    for i in 1...n {
        if isUsed[i] {
            continue
        }
        
        arr[digit] = i
        isUsed[i] = true
        
        backTracking(digit+1)
        
        isUsed[i] = false
    }
}

backTracking(0) // 각 순열의 길이

15650

15650
음...시작지점과 길이 두가지를 1씩 증가시키면서 하는거 같은데
왜 안되냐 🤬

profile
인생노잼

0개의 댓글