[백준] 차이를 최대로 (10819)

문제 설명

백준 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)

태그:

카테고리:

업데이트: