Mac Plus

Hello Swift

브루트 포스(순열)

문제 해설
  • 브루트 포스 문제. 모든 경우의 수를 구하고 그중에서 최적의 답을 찾는것이다.
  • 순열 재귀함수로 3가지 수로 더한 모든 경우의 수를 갖는 배열을 만들고 기준보다 작거나 같은 배열을 filter해서 그중에서 max값을 가져온다.
import Foundation

let num = readLine()!.components(separatedBy: " ").map { Int($0)! }
var arr = readLine()!.components(separatedBy: " ").map { Int($0)! }
var result: [Int] = []

func log(_ size: Int) {
    var ar: [Int] = []
    for i in 0..<size {
        ar.append(arr[i])
    }
    result.append(ar.reduce(0, +))
}

func permutation(_ n: Int, _ r: Int, _ depth: Int) {
    if r == depth {
        log(depth)
        return
    }
    
    for i in depth..<n {
        arr.swapAt(i, depth)
        permutation(n,r,depth + 1)
        arr.swapAt(i, depth)
    }
}

permutation(arr.count,3,0)
print(result.filter { $0 <= num[1] }.max()!)