백준 10819. 차이를 최대로 [실패]

알고리즘/백준 알고리즘

2020. 8. 26. 12:00

1.실패 원인

잘 모르겠다.. 예시가 하나뿐이라서 그건 정답이었는데 ㅜㅜ 아무래도 순열문제라서 문제가 생긴듯하다. 정렬을 하듯이 순서를 바꿔줬을 때는 잘됐다. 근데 이 알고리즘이 순서에 영향을 받는다는 사실을 깨달았다.. 계속 생각하다가 결국 FAIL! 블로그를 뒤져보니 전용 라이브러리 함수가 있더라 (순열 함수)

 

2.작성 코드

#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
int arr[9];
int calc(const int* arr, int N) {
int ans = 0;
for (int i = 0; i < N - 1; i++) {
ans += abs(arr[i] - arr[i + 1]);
}
return ans;
}
int main() {
int N;
int answer = 0;
cin >> N;
for (int i = 0; i < N; i++)
cin >> arr[i];
sort(arr, arr + N);
do {
answer = max(calc(arr, N), answer);
} while (next_permutation(arr, arr + N));
cout << answer << endl;
}

3.참고 코드

https://sihyungyou.github.io/baekjoon-10819/

 

백준 10819번 : 차이를 최대로

BOJ

sihyungyou.github.io

 

4. 해결 방안

순열 라이브러리가 존재한다는 것을 암기해야겠다. 팁 게시판에 포스팅을 할 예정이다.