본문 바로가기
JAVA

백준 10819

by Son 2022. 9. 6.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    boolean[] v;
    int[] arr;
    int answer = 0;
    int n;

    private void dfs(int cnt, int bf, int sum) {
        if (cnt == n) {
            answer = Math.max(answer, sum);
            return;
        }

        for (int i = 0; i < n; i++) {
            if (v[i]) continue;
            v[i] = true;
            dfs(cnt+1, arr[i], cnt==0 ? 0:sum+Math.abs(bf-arr[i]));
            v[i] = false;
        }
    }

    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        arr = new int[n];
        v = new boolean[n];
        for (int i = 0; i < n; i++) arr[i] = Integer.parseInt(st.nextToken());

        dfs(0, 0, 0);
        System.out.println(answer);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    boolean[] v;
    int[] arr;
    int answer = 0;
    int n;

    private void dfs(int cnt, int bf, int sum) {
        if (cnt == n) {
            answer = Math.max(answer, sum);
            return;
        }

        for (int i = 0; i < n; i++) {
            if (v[i]) continue;
            v[i] = true;
            dfs(cnt+1, arr[i], cnt==0 ? 0:sum+Math.abs(bf-arr[i]));
            v[i] = false;
        }
    }

    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        arr = new int[n];
        v = new boolean[n];
        for (int i = 0; i < n; i++) arr[i] = Integer.parseInt(st.nextToken());

        dfs(0, 0, 0);
        System.out.println(answer);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

1.dfs

2.깊이탐색으로 +1씩 해줌

3.반환한 후에 방문체크 해제

 

'JAVA' 카테고리의 다른 글

백준 6603  (0) 2022.09.13
백준 10971번  (0) 2022.09.06
백준 10974번 모든 순열  (0) 2022.08.30
백준 10973 다음 순열  (0) 2022.08.28
백준 10972  (0) 2022.08.26