알고리즘/알고리즘 문제풀이
DFS/BFS 백트랙킹_백준_15649
Downey
2021. 8. 24. 19:57
접근방법
1. 재귀를 사용하여, 주어진 array를 순회, 사용되지 않은 수를 append하여 [[Int]]를 만든다.
오답코드
시간초과 발생.
string으로 변환 과정에 시간이 소요되어 초과하는듯..?
굳이 수정하여 통과하게 만들지는 않았다.
스터디원의 코드를 보았을 때 같은 방법을 사용하여 통과하는 것을 확인했음.
더보기
import Foundation
func doPermutation(array: [Int],
limit: Int,
present: [Int] = [],
answer: [[Int]] = []) -> [[Int]] {
var newAnswer = answer
var nowPresent = present
if nowPresent.count == limit {
newAnswer.append(nowPresent)
return newAnswer
}
for i in 1...array.count {
if nowPresent.contains(i) {
continue
}
nowPresent.append(i)
newAnswer = doPermutation(array: array, limit: limit, present: nowPresent, answer: newAnswer)
nowPresent.removeLast()
}
return newAnswer
}
let input = readLine()!.split(separator: " ").map { Int($0)!}
let array = Array(1...input[0])
let limit = input[1]
doPermutation(array: array, limit: limit).forEach {
var temp: [String] = []
$0.forEach {
temp.append(String($0))
}
print(temp.joined(separator: " "))
}