첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
첫째 줄에 배열에 들어있는 수의 순서를 적절히 바꿔서 얻을 수 있는 식의 최댓값을 출력한다.
예제 입력 1
6
20 1 15 8 4 10
예제 출력 1
62
let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
let n = +input.shift();
let arr = input.shift().split(" ").map(e => +e);
const solution = (n, arr) => {
let answer = new Set();
let visited = new Array(n + 1).fill(0);
let tmp = [];
const dfs = (cnt) => {
if (cnt === n) {
let sum = 0;
for (let i = 0; i < tmp.length - 1; i++) {
sum += Math.abs(tmp[i] - tmp[i + 1]);
}
answer.add(sum);
} else {
for (let i = 0; i < n; i++) {
if (!visited[i]) {
visited[i] = 1;
tmp.push(arr[i]);
dfs(cnt + 1);
tmp.pop();
visited[i] = 0;
}
}
}
};
dfs(0);
return Math.max(...[...answer]);
};
console.log(solution(n, arr));