[백준] 차이를 최대로 (10819)
문제 설명
입력 및 출력
» 입력
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
» 출력
첫째 줄에 배열에 들어있는 수의 순서를 적절히 바꿔서 얻을 수 있는 식의 최댓값을 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
6 20 1 15 8 4 10 |
62 |
문제 풀이(SWIFT) 1
//
// main.swift
// BOJ10819_SWIFT
//
// Created by choiyoujun on 2022/02/22.
//
let N = Int(readLine()!)!
let arr = readLine()!.split(separator: " ").map { Int($0)! }.sorted()
var check = [Bool](repeating: false, count: N)
var tArr = [Int](repeating: 0, count: N)
var ans = 0
func dfs(depth: Int) {
if depth == N {
var sum = 0
for i in 0..<N - 1{
sum += abs(tArr[i] - tArr[i + 1])
}
ans = max(ans, sum)
return
}
for i in 0..<N {
if !check[i] {
check[i] = true
tArr[depth] = arr[i]
dfs(depth: depth + 1)
check[i] = false
}
}
}
dfs(depth: 0)
print(ans)