Flatten

최민수·2023년 8월 1일
0

알고리즘

목록 보기
80/94
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Solution {

    public static void main(String[] args) throws IOException {
        // 입력
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        for (int i = 1; i <= 10; i++) {
            String first = bufferedReader.readLine();
            int N = Integer.parseInt(first);
            List<Integer> dummies = new ArrayList<>();
            String input = bufferedReader.readLine();
            StringTokenizer stringTokenizer = new StringTokenizer(input, " ");

            while (stringTokenizer.hasMoreTokens()) {
                dummies.add(Integer.parseInt(stringTokenizer.nextToken()));
            }

            // 정렬 후 덤프
            Collections.sort(dummies);
            int maxNum, minNum, maxIdx, minIdx;

            while (true) {
                if (N == 0) {
                    break;
                }
                maxNum = Collections.max(dummies);
                minNum = Collections.min(dummies);
                maxIdx = dummies.indexOf(maxNum);
                minIdx = dummies.indexOf(minNum);

                if (maxNum - minNum <= 1) {
                    break;
                }
                dummies.set(maxIdx, maxNum - 1);
                dummies.set(minIdx, minNum + 1);

                N -= 1;
            }

            maxNum = Collections.max(dummies);
            minNum = Collections.min(dummies);
            System.out.println("#" + i + " " + (maxNum-minNum));
        }
    }
}

D3

역시 자바로 입력받고 정렬하는 과정이 익숙하지 않았다. 생각보다 시간이 더 걸렸지만 논리가 어려운 문제는 아니었다.

n 최대횟수 1000번에 리스트 sort() 를 돌리는건 너무 무식한 코드인 것 같아 max, min, index 를 받아와 처리했다.


출처: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh

profile
CS, 개발 공부기록 🌱

0개의 댓글