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));
}
}
}
역시 자바로 입력받고 정렬하는 과정
이 익숙하지 않았다. 생각보다 시간이 더 걸렸지만 논리가 어려운 문제는 아니었다.
n 최대횟수 1000번에 리스트 sort()
를 돌리는건 너무 무식한 코드인 것 같아 max, min
, index
를 받아와 처리했다.
출처: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh