<풀이>
왼쪽 부분 비교 후 오른쪽 부분을 비교하여 왼쪽과 오른쪽의 최대높이보다 높거나 같은 부분만 살아남는다.
for(int test_case = 1; test_case <= T; test_case++)
{
HashMap<Integer, Integer> buildingMap = new HashMap<Integer, Integer>();
int result = 0;
int buildingNumber = sc.nextInt();
int [] buildings = new int[buildingNumber];
for(int i = 0; i < buildingNumber; i++){
buildings[i] = sc.nextInt();
}
for(int i = 0; i < buildingNumber-2; i++){
if(buildings[i] > Math.max(buildings[i+1], buildings[i+2]))
buildingMap.put(i, buildings[i] - Math.max(buildings[i+1], buildings[i+2]));
}
for(int i = buildingNumber-1; i >= 2; i--){
if(buildings[i] > Math.max(buildings[i-1], buildings[i-2])){
if(buildingMap.containsKey(i)){
result += Math.min(buildingMap.get(i), buildings[i] - Math.max(buildings[i-1], buildings[i-2]));
}
}
}
System.out.println("#"+test_case+" "+result);
}
}