[백준] 11501: 주식 - JAVA

https://www.acmicpc.net/problem/11501

풀이

미래에 더 높은 주가가 나올 예정이라면 주식 하나를 샀다가 더 비싸게 파는것이 이득이다.

따라서, 주가를 저장해놓고 역순으로 탐색한다.

최댓값을 저장하면서 최댓값보다 크거나 같다면 최댓값을 갱신하고

최댓값보다 작다면 (최댓값 - 주가)를 이익에 더해준다.


메모리: 318056KB

시간: 1084ms

언어: Java 11

코드

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();
        for (int tc = 0; tc < T; tc++) {
            int N = Integer.parseInt(br.readLine());

            int[] arr = new int[N];
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int i = 0; i < N; i++) {
                arr[i] = Integer.parseInt(st.nextToken());
            }

            int max = Integer.MIN_VALUE;
            long sum = 0;
            for (int i = N - 1; i >= 0; i--) {
                if (arr[i] < max) {
                    sum += (max - arr[i]);
                } else {
                    max = arr[i];
                }
            }

            sb.append(sum).append("\n");
        }

        System.out.println(sb);
    }

}