백준 11501 (주식) - Java

more·2023년 9월 25일
import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        // 총 테스트 케이스 갯수
        int testCase = Integer.parseInt(br.readLine());

        for (int i = 0; i < testCase; i++) {
            // 각각 테스트 별로 존재하는 주식 갯수
            int eachCase = Integer.parseInt(br.readLine());
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            ArrayList<Integer> temp = new ArrayList<>();
            // 일별 주가 저장
            for (int j = 0; j < eachCase; j++)  temp.add(Integer.parseInt(st.nextToken()));
            // 마지막을 최대 값으로 저장
            int max = temp.get(temp.size() - 1);
            // 답은 부호있는 64bit 정수형으로 표현 가능하다. -> 조건 충족시키기 위해서 int가 아니라 long이나 int64로 해야함
            long res = 0L;
            // 마지막보다 하나 전 인덱스부터 시작
            for (int j = eachCase - 2; j >= 0; j--) {
                // 최대 값보다 작으면 최대값 - 현재 값을 더하면 되고
                // 아니면 최대값을 현재 값으로 바꾼다.
                if (max >= temp.get(j)) res += max - temp.get(j);
                else max = temp.get(j);
            }

            bw.write(res + "\n");
        }

        bw.flush();
        bw.close();
        br.close();
    }

}

0개의 댓글