11501번: 주식
입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타
www.acmicpc.net
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
// 테스트케이스 수
int T = Integer.parseInt(br.readLine());
for (int t = 0; t < T; t++) {
// 날의 수 (2 <= N <= 1000000)
int N = Integer.parseInt(br.readLine());
// 날 별 주가를 저장할 배열
int[] A = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
// i번 날의 주가
A[i] = Integer.parseInt(st.nextToken());
}
// 최대 이익
long answer = 0;
// 현재 주가
int topPrice = A[N - 1];
for (int i = N - 2; i >= 0; i--) {
if (A[i] > topPrice) {
// 현재 주가보다 더 큰 경우 갱신
topPrice = A[i];
} else {
// 아닌 경우 이익 누적해서 더해줌
answer += topPrice - A[i];
}
}
sb.append(answer).append("\n");
}
System.out.print(sb);
}
}
728x90
'알고리즘 > 그리디알고리즘' 카테고리의 다른 글
[백준][JAVA] 1783번 병든 나이트 (0) | 2024.03.13 |
---|---|
[백준][JAVA] 1092번 배 (0) | 2024.01.20 |
[백준][JAVA] 15903번 카드 합체 놀이 (0) | 2023.12.27 |