https://www.acmicpc.net/problem/10819
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
해석 및 팁
이 문제는 dfs를 활용하는 브루트포스 문제입니다. 만들 수 있는 모든 수열의 케이스를 조사한 뒤 최댓값을 출력해 주면 되는 문제입니다.
Java 코드
import java.util.Scanner;
public class Main {
static int max = -1;
static int n;
static int[] num;
static int[] arr;
static boolean[] visit;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
num = new int[n];
arr = new int[n];
visit = new boolean[n];
for(int i = 0; i < n; i++) num[i] = sc.nextInt();
dfs(0);
System.out.println(max);
}
public static void dfs(int count) {
if(count == n) {
int sum = 0;
for(int i = 0; i < n - 1; i++) sum += (Math.abs(arr[i] - arr[i + 1]));
max = Math.max(max, sum);
return;
}
for(int i = 0; i < n; i++) {
if(visit[i] == false) {
visit[i] = true;
arr[count] = num[i];
dfs(count + 1);
visit[i] = false;
}
}
}
}
'백준' 카테고리의 다른 글
백준 9184 신나는 함수 실행(Java) (0) | 2023.02.09 |
---|---|
백준 11048 이동하기(Java) (0) | 2023.02.09 |
백준 1927 최소 힙(Java) (0) | 2023.02.09 |
백준 11722 가장 긴 감소하는 부분 수열(Java) (0) | 2023.02.09 |
백준 2644 촌수계산(Java) (0) | 2023.02.09 |