평탄화 작업을 할 때 정렬을 먼저 하면 배열의 마지막 요소와 처음 요소를 이용해 쉽게 접근이 가능했습니다.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
for (int tc = 1; tc <= 10; tc++) {
int cnt = sc.nextInt(); // 덤프횟수 1~1000
int[] nums = new int[100]; // 가로 방향은 100
for (int i = 0; i < nums.length; i++) {
nums[i] = sc.nextInt();
}
// 평탄화 작업
while (true) {
Arrays.sort(nums); // 정렬하기
int high = nums[99] - nums[0]; // 최고점과 최저점의 차이
if (high <= 1 || cnt <= 0) { // 평탄화 완료 혹은 덤프횟수를 다 쓴 경우
System.out.println("#" + tc + " " + high);
break;
}
// 평탄화 완료가 아직이고 or 덤프횟수가 남은 경우
cnt--;
nums[99]--;
nums[0]++;
}
}
sc.close();
}
}