간단하게 구현했다.
import Foundation
var N = 0
var per = [[Int]]()
func permutation(_ ARR:[Int]){
var arr = ARR
if arr.count == N{
per.append(arr)
return
}
for i in 1...N{
if !arr.contains(i){
arr.append(i)
permutation(arr)
arr.removeLast()
}
}
}
func solution(_ K:Int, _ dungeons:[[Int]]) -> Int {
var li = [(Int,Int)]()
var (k,ret) = (K,0)
N = dungeons.count
for i in 0..<dungeons.count{
li.append((dungeons[i][0],dungeons[i][1]))
}
permutation([])
for i in 0..<per.count{
var (ans,piro) = (0,K) //이번 순열을 따르는 순서의 피로도 표현
for j in per[i]{
if piro >= li[j-1].0{
piro -= li[j-1].1
ans += 1
}
}
ret = ret > ans ? ret : ans
}
return ret
}
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges