백준 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. 해결 방안

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

'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

백준 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