Algorithm/SWEA

[swexpert] 1208. Flatten

반응형

[swexpert] 1208. Flatten


문제 출처


https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh&categoryId=AV139KOaABgCFAYh&categoryType=CODE




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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import java.util.Arrays;
import java.util.Scanner;
 
public class Solution_1208 {
    
    static int max = 0;
    
    public static int flatten(int arr[], int dump, int step) {
        
        if(dump < step) {
            return max;
        } else {
            
            if(arr[0!= arr[arr.length-1]) {
                arr[arr.length-1]--;
                arr[0]++;
            }
            
            Arrays.sort(arr);
            //System.out.println(Arrays.toString(arr));
            max = arr[arr.length-1- arr[0];
            
            return flatten(arr, dump, step+1);
        }
    }
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        int[] box = new int[100]; //박스 수
        
        
        for (int i = 1; i <= 10; i++) {
            
            int dump = sc.nextInt();
            
            for (int j = 0; j < box.length; j++) {
                box[j] = sc.nextInt();
            }
            
            Arrays.sort(box);
            
            System.out.print("#"++" ");
            System.out.println(flatten(box, dump, 1));
        }
        
        /*
        for (int i = 1; i <= 10; i++) {
            
            int max = 0; // 최대 높이 차
            int dump = sc.nextInt(); // 덤프 횟수
            
            for (int j = 0; j < box.length; j++) {
                box[j] = sc.nextInt(); // 박스별 높이 입력
            }
            
            for (int j = 0; j < dump; j++) { // 덤프 수만큼 반복
                int maxBox = 1; // 최소 1부터
                int minBox = 100; // 최대 100까지
                
                int maxNum = 0; // 최고 높이 박스 넘버
                int minNum = 0; // 최소 높이 박스 넘버
                
                for (int k = 0; k < box.length; k++) {
                    if(maxBox <= box[k]) { // 최대높이 박스 넘버 구하기
                        maxBox = box[k];
                        maxNum = k;
                    }
                    if(minBox >= box[k]) { // 최소높이 박스 넘버 구하기
                        minBox = box[k];
                        minNum = k;
                    }
                }
                
                box[maxNum]--; // 최고 높이 박스의 높이 하나 감소
                box[minNum]++; // 최소 높이 박스의 높이 하나 증가
                
                maxNum = 0; // 다시 초기화
                minNum = 0; // 다시 초기화
                
                for (int k = 0; k < box.length; k++) {
                    if(maxBox <= box[k]) { // 최대높이 박스 넘버 구하기
                        maxBox = box[k];
                        maxNum = k;
                    }
                    if(minBox >= box[k]) { // 최소높이 박스 넘버 구하기
                        minBox = box[k];
                        minNum = k;
                    }
                }
                
                max = box[maxNum] - box[minNum]; // 덤프 하나 옮긴 후 최고점과 최저점 차이
            }
            
            
            System.out.println("#" + i + " " + max);
        }
        */
        
    }
 
}
cs


반응형

'Algorithm > SWEA' 카테고리의 다른 글

[swexpert] 1225. 암호생성기  (0) 2019.01.11
[swexpert] 1206. View  (0) 2019.01.11
[swexpert] 5431. 민석이의과제체크하기  (0) 2019.01.08
[swexpert] 2063. 중간값 찾기  (0) 2019.01.07
[swexpert] 1204. 최빈수 구하기  (0) 2019.01.07