SW Expert Academy - 1208번(Flatten)

최지홍·2022년 2월 5일
0

SW Expert Academy

목록 보기
5/36

문제 출처: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh&categoryId=AV139KOaABgCFAYh&categoryType=CODE&problemTitle=1208&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Solution {

    public static void main(String[] args) throws IOException {
        StringBuilder sb = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int problemNum = 1;

        String temp = "";
        while ((temp = reader.readLine()) != null && !temp.equals("")) {
            int dump = Integer.parseInt(temp);
            StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
            int[] nums = new int[100];

            for (int i = 0; i < nums.length; i++) {
                if (tokenizer.hasMoreTokens()) {
                    nums[i] = Integer.parseInt(tokenizer.nextToken());
                }
            }

            while (dump-- > 0) {
                Arrays.sort(nums);
                int test = nums[nums.length - 1] - nums[0];
                if (test == 1 || test == 0) {
                    break;
                }

                nums[nums.length - 1]--;
                nums[0]++;
            }

            Arrays.sort(nums);

            sb.append("#").append(problemNum++).append(" ");
            sb.append(nums[nums.length - 1] - nums[0]).append("\n");
        }

        System.out.println(sb);
    }

}

  • 평탄화를 수행하는 문제로, 간단히 정렬을 통해 처리하였다.
  • 오름차순으로 정렬하여 처음 값과 끝 값을 변화시키고, 숫자만큼 평탄화를 수행했거나, 처음 값과 끝 값의 차이가 0 또는 1이 되면 반복을 종료하였다.
profile
백엔드 개발자가 되자!

0개의 댓글