import java.io.*;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N;
static int ans = 0;
static StringTokenizer st;
public static void recur(int[] A, int depth, int n) {
//종료조건
if(depth == N) {
ans = Math.max(ans, calculate(A, n));
return;
}
//재귀호출
for(int i = depth; i < N; i++) {
swap(A, i ,depth);
recur(A, depth+1, n);
swap(A, i, depth);
}
}
public static int calculate(int[] arr, int n) {
int sum = 0;
for(int i = 0; i < n-1; i++) {
sum += Math.abs(arr[i] - arr[i+1]);
}
return sum;
}
public static void swap(int[] A, int a, int b) {
int tmp = A[a];
A[a] = A[b];
A[b] = tmp;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] A = new int[N];
for(int i = 0; i < N; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
recur(A, 0, N);
System.out.println(ans);
}
}
기본적인 완전탐색이다. 순열 문제로 n개의 원소 중 r개의 원소를 뽑아서 중복없이 순서대로 나열한 후에 |A[0] - A[1]| + |A[1] - A[2]| ... + |A[N-2] - A[N-1]| 을 한 값중에서 MAX값을 출력해주면 된다.
'Dev > PS' 카테고리의 다른 글
[백준] 14888 연산자 끼워넣기 java (0) | 2022.02.08 |
---|---|
[백준] 14889 스타트와 링크 java (0) | 2022.02.08 |
[백준] 1186 부분수열의 합 java (0) | 2022.02.02 |
[백준] 1009 분산 처리 java (0) | 2022.01.27 |
[백준] 15686 치킨 배달 java (1) | 2022.01.26 |