문제.

알고리즘.
입력받은 줄을 뒤집어서 큰값을 max_value로 정하고 다음 큰값이 나올때까지 한칸씩 내려가면서 차이를 diff 변수에 저장한다. diff의 범위를 잘 생각해줘야하는 문제인듯
코드.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int t=1;t<=T;t++) {
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line, " ");
for(int j=0; st.hasMoreTokens();j++) {
arr[j] = Integer.parseInt(st.nextToken());
}
int len = arr.length;
int max_value = 0;
long benefit = 0;
for(int k=len-1;k>=0;k--) {
if(arr[k] > max_value) {
max_value = arr[k];
}
benefit += max_value-arr[k];
}
System.out.printf("#%d %d\n",t, benefit);
}
br.close();
}
}
결과.

소감.
변수의 범위를 조금만 잘못하면 오류가 발생하는 문제임. 생각보다 침착했다.
'코딩테스트' 카테고리의 다른 글
| SWEA 1213 : String (0) | 2024.03.05 |
|---|---|
| SWEA 2005 : 파스칼의 삼각형 (0) | 2024.02.23 |
| SWEA 2072 : 간단한 369게임 (0) | 2024.02.22 |
| 백준 2751 : 수 정렬하기 2 (0) | 2024.02.21 |
| 백준 1018번 : 체스판 다시 칠하기 (0) | 2024.02.21 |