// 주식
package Silver_II_2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Ex11501 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 0; j < n; j++) {
arr[j] = Integer.parseInt(st.nextToken());
}
int currentBigNum = arr[n - 1]; // 현재 가장 큰 주가
int currentNum; // 현재 주가
long profit = 0; // 이익
// 이익 계산 코드
for (int j = n-2; j >= 0; j--) {
currentNum = arr[j]; // 현재 주가 저장
if (currentNum < currentBigNum) {
profit += currentBigNum - currentNum;
} else {
currentBigNum = currentNum;
}
}
// 최대 이익 출력
System.out.println(profit);
}
}
}
순방향으로 계산하는 것이 아닌 역방향으로 계산하는 것을 생각하면 의외로 쉬운 문제다. 다만, 결과 출력할때 64bit 정수형으로 표현이 가능하다고 했으니 최대 이익을 int 타입이 아닌 long 타입으로 선언해야 한다.
'백준 풀이 > 자바(Java)' 카테고리의 다른 글
| 백준 5179 자바 - 우승자는 누구? (0) | 2024.08.07 |
|---|---|
| 백준 22232 자바 - 가희와 파일 탐색기 (0) | 2024.08.05 |
| 백준 19532 자바 - 수학은 비대면강의입니다 (4) | 2024.08.04 |
| 백준 1431 자바 - 시리얼 번호 (0) | 2024.08.04 |
| 백준 18322 자바 - Word Processor (0) | 2024.07.21 |