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. 해결 방안
순열 라이브러리가 존재한다는 것을 암기해야겠다. 팁 게시판에 포스팅을 할 예정이다.
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
백준 1697. 숨바꼭질 [실패] (0) | 2020.08.27 |
---|---|
백준 1963. 소수경로 [실패] (0) | 2020.08.27 |
백준 1107. 리모컨 [실패] (0) | 2020.08.24 |
백준 1931. 회의실배정 [실패] (0) | 2020.08.14 |
백준 10610. 30 [실패] (0) | 2020.08.11 |