worst case의 경우 N!
이고, N의 최댓값이 8이므로 최대 8!번 연산해야 한다. 이정도면 모든 경우에 대해 다 계산해봐도 되므로, 순열을 이용해 모든 경우의 수를 다 구해본다. next_permuataion()
은 사용하기 전에 배열을 미리 정렬해 놔야 함!
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
vector<int> v;
int N;
int go() {
int ans, i;
ans = 0;
for (i = 0; i < N - 1; i++) ans += abs(v[i] - v[i + 1]);
return ans;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int ans, i, tmp;
cin >> N;
for (i = 0; i < N; i++) {
cin >> tmp;
v.push_back(tmp);
}
sort(v.begin(), v.end());
ans = 0;
do {
tmp = go();
ans = max(ans, tmp);
} while (next_permutation(v.begin(), v.end()));
cout << ans << endl;
return 0;
}