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. 해결 방안
순열 라이브러리가 존재한다는 것을 암기해야겠다. 팁 게시판에 포스팅을 할 예정이다.