[SWEA] #1208 Flatten

KwonSC·2021년 11월 6일
0

SWEA - Java

목록 보기
3/26
post-thumbnail

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


Code

import java.util.Scanner;

class Solution {
    public static void main(String args[]) throws Exception {
        Scanner sc = new Scanner(System.in);
        for (int testCase = 1; testCase <= 10; testCase++) {
            int num = sc.nextInt();
            int[] height = new int[100];
            int min = 101;
            int max = -1;
            for (int i = 0; i < 100; i++) {
                int temp = sc.nextInt();
                height[temp - 1]++;
                if (temp < min) {
                    min = temp;
                }
                if (max < temp) {
                    max = temp;
                }
            }
            for (int i = 0; i < num; i++) {
                height[max - 1]--;
                height[max - 2]++;
                if (height[max - 1] <= 0) {
                    max--;
                }
                height[min - 1]--;
                height[min]++;
                if (height[min - 1] <= 0) {
                    min++;
                }
            }
            System.out.printf("#%d %d\n", testCase, max - min);
        }
    }
}

Solution

배열 height의 값은 각 높이 인덱스 만큼 쌓인 상자 더미 개수
num횟수 주어진 덤프 횟수 만큼 for문을 돌리면서 아래의 과정을 반복
height의 max - 1 값을 빼서 max - 2에 더해줌
ex) 높이 7인 상자더미에서 평탄화 과정을 진행하면 높이 6의 상자더미가 됨
만약 max - 1값이 0 이하 라면 높이 max인 상자더미가 없으면 max값 감소
height의 min - 1 값을 빼서 min에 더해줌
ex) 위와 같이 높이 0인 상자에서 평탄화 과정을 진행하면 높이 1의 상자더미가 됨
만약 min - 1값이 0 이하 라면 높이 min인 상자더미가 없으면 min값 증가
마지막에 max - min값 출력

0개의 댓글