Arrays.sort()를 사용하면 금방 풀 수 있지만! sort() 구현을 배우는 중이라 구현해서 풀었다.
package swea;
//[S/W 문제해결 기본] 1일차 - Flatten
import java.util.Scanner;
public class p1208 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int t = 1; t <= 10; t++) {
int dump = sc.nextInt();
int[] box = new int[100];
for (int i = 0; i < 100; i++) {
box[i] = sc.nextInt();
}
//sort 안쓰기
for (int i = 0; i < dump; i++) {
for (int j = 0; j < 99; j++) {
for (int k = 0; k < 99 - j; k++) {
if (box[k] > box[k + 1]) {
int tmp = box[k];
box[k] = box[k + 1];
box[k + 1] = tmp;
}
}
}
if (box[99] - box[0] == 0) { // 덤프 횟수 내에 평탄화가 완료됐다면 그냥 종료
break;
}
box[99] = box[99] - 1; // 높은 곳에서 하나를 빼고
box[0] = box[0] + 1; // 낮은 곳에 올리기
}
// 마지막 작업으로 순서가 변했을 수도 있으니 99,98 비교 & 0,1 비교
System.out.printf("#%d %d\n", t, Math.max(box[99], box[98]) - Math.min(box[0], box[1]));
}
}
}