문제
https://www.acmicpc.net/problem/10819
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
소스코드
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
v.push_back(x);
}
sort(v.begin(), v.end());
int sum = 0;
do {
int temp = 0;
for (int i = 0; i < n-1; i++) {
temp += abs(v[i] - v[i + 1]);
}
sum = max(sum, temp);
} while (next_permutation(v.begin(), v.end()));
cout << sum;
}
해설
같은 숫자를 뽑았을 경우 순서에 따라서 결과가 다르다.
모든 경우의 수를 해봐도 8! 밖에 안되기 때문에 모든 순열을 살펴보면서 비교해보면된다.
먼저 첫 시작 순열을 결정해주기 위해서 정렬을 해준다음 next_permutation을 이용하여 모든 경우의 수를 비교해보았다.
'Algorithm > brute force' 카테고리의 다른 글
[백준] 알고리즘 6603번 - 로또문제 (0) | 2021.06.11 |
---|---|
[백준] 알고리즘 10971번 - 외판원 순회 2문제 (0) | 2021.06.10 |
[백준] C++ 알고리즘 10973번 - 이전 수열문제 (0) | 2021.06.03 |
[백준] C++ 알고리즘 10974번 - 모든 순열문제 (0) | 2021.06.02 |
[백준] C++ 알고리즘 2529번 - 부등호 문제 (0) | 2021.06.02 |