Competition/Baekjoon

[백준] 10819번 자바 차이를 최대로

bisi 2020. 4. 29. 13:43
문제 출처 

https://www.acmicpc.net/problem/10819

 

10819번: 차이를 최대로

첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.

www.acmicpc.net

 

 

 

접근 방식 및 풀이

- N의 값이 최대 8까지 이므로 배열로 만들수 있는 모든 수열들의 케이스를 조사(순열 개념 적용)

 

- 각 배열로 구한 값들중 가장 큰 값을 출력한다.

 

 

 

소스 코드 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.Scanner;
 
public class Main {
    static int n ;
    static int[] arr;
    static int result;
    static int[]  tArr;
    static boolean[] visited;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n =  sc.nextInt();
        arr =new int[n];
 
        for (int i = 0; i <n ; i++) {
            arr[i] =sc.nextInt();
        }
 
        Arrays.sort(arr);
 
        visited =new boolean[n];
        tArr =new int[n]; // 각순열 케이스를 담아줄 임시 저장소
 
        result=0;
        solve(0);
        System.out.println(result);
    }
    private static void solve(int count){
        if(count == n){
            int sum =0;
            for (int i = 0; i <n-1 ; i++) {
                sum += Math.abs(tArr[i] - tArr[i+1]);
            }
            result = Math.max(result,sum);
            return;
        }
 
        for (int i = 0; i <n ; i++) { // 각순열 케이스생성
            if(visited[i]){
                continue;
            }
            visited[i] =true;
            tArr[count] = arr[i];// 담는다.
            solve(count+1);// 재귀로 그 다음 index 늘려간다.
            visited[i] =false;// 다 만들고 false로 해제
        }
    }
}
    
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

 

결과 

 

'Competition > Baekjoon' 카테고리의 다른 글

[백준] 1182번 자바 부분수열의 합  (0) 2020.04.30
[백준] 1208번 자바 부분수열의 합2  (0) 2020.04.27
[백준] 6603번 자바 로또  (0) 2020.04.27