브루트포스 문제입니다.
최대 입력값이 8이므로 모든 경우의 수를 확인해도 시간초과가 발생하지 않습니다.
순열로 모든 경우의수를 확인합니다.
만들어진 순서로 계산하여 최대값이 나오는 것을 저장하여 출력해주었습니다.
import java.io.*;
import java.util.*;
public class Main {
static int n;
static int result;
static int[] arr;
static int[] visit;
static int[] calc;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
n = Integer.parseInt(br.readLine());
result = 0;
arr = new int[n];
visit = new int[n];
calc = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; ++i) {
arr[i] = Integer.parseInt(st.nextToken());
}
for (int i = 0; i < n; ++i) {
visit[i] = 1;
dfs(i, 0);
visit[i] = 0;
}
bw.write(result + "\n");
bw.close();
}
public static void dfs(int index, int cnt) {
calc[cnt] = arr[index];
if (cnt == n - 1) {
int sum = 0;
for (int i = 1; i < n; ++i) {
sum += Math.abs(calc[i - 1] - calc[i]);
}
result = Math.max(result, sum);
return;
}
for (int i = 0; i < n; ++i) {
if (visit[i] != 0) {
continue;
}
visit[i] = 1;
dfs(i, cnt + 1);
visit[i] = 0;
}
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 2467번 용액 (0) | 2023.07.24 |
---|---|
[Java] 백준 16194번 카드 구매하기 2 (0) | 2023.07.22 |
[Java] 백준 1991번 트리 순회 (0) | 2023.07.22 |
[Java] 백준 3343번 장미 (0) | 2023.07.22 |
[Java] 백준 2141번 우체국 (0) | 2023.07.19 |