Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Archives
Today
Total
관리 메뉴

최's 먹공로그

SW expert Academy 1208_[S/W 문제해결 기본]1일차_Flatten 본문

APS

SW expert Academy 1208_[S/W 문제해결 기본]1일차_Flatten

ChoiSH313 2019. 2. 3. 16:03

https://www.swexpertacademy.com/main/code/problem/problemDetail.do

 

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
import java.util.Arrays;
import java.util.Scanner;
 
public class Solution_1208_SW문제해결기본1일차_Flatten_최성호 {
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        for(int tc = 1; tc <= 10; tc++) {
            
            // 입력
            int dump = sc.nextInt();
            int[] box = new int[100];
            for(int i = 0; i < 100; i++) {
                box[i] = sc.nextInt();
            }
            
            int max = 0, min = 999, result = 0;
            // dump동안 max, min 구해서 max--, min++ 해주기
            /*for(int j = 0; j < dump; j++) { // dump동안 반복
                for(int k = 0; k < 100; k++) { // box의 값에 인덱스
                    if(max < box[k]) { // box값중에서 max값을 구하고 최종 max값의 index를 구함
                        max = box[k];
                        max_index = k;
                    }
                    if(min > box[k]) { // box값중에서 min값을 구하고 최종 min값의 index를 구함
                        min = box[k];
                        min_index = k;
                    }
                }
                box[max_index]--;
                box[min_index]++;
                max = 0;
                min = 999;
            }*/
            
            // 더 간편한 방법
            Arrays.sort(box); // 오름차순으로 정렬 해주고
            for(int j = 0; j < dump; j++) {
                Arrays.sort(box); // dump동안 계속 정렬
                box[0]++// 처음값이 최소값이므로 ++
                box[99]--// 끝값이 최대값이므로 --
            }
            
            for(int l = 0; l < 100; l++) { // dump를 끝낸 배열에서
                if(max < box[l]) { // 최대값을 저장
                    max = box[l];
                }
                if(min > box[l]) { // 최소값을 저장
                    min = box[l];
                }
            }
            
            result = max - min; // 결과를 저장
            System.out.println("#" + tc + " " + result);
            
            
        } // end of tc
        
        
    } // end of main
 
}
 
cs