Java

[백준 11501] 주식 (JAVA)

iheeeee6-6 2023. 5. 21. 21:46
728x90

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

 

11501번: 주식

입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타

www.acmicpc.net

 

오늘 코테에서 나온 유형과 비슷한 것 같아서 풀어봤는데,, 전혀 비슷하지 않았다 ㅎㅎㅎ

 

암튼, 이 문제는 거꾸로 포문을 돌면서 max값을 찾고, max 값보다 작을 경우에는 max값과의 차이(즉, 이익) 를 result에 넣어준다. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		StringBuilder sb = new StringBuilder();
		for(int i=0;i<n;i++) {
			int d = Integer.parseInt(br.readLine());
			StringTokenizer st = new StringTokenizer(br.readLine());
			int[] arr = new int[d];
			for(int j=0;j<d;j++) {
				arr[j]=Integer.parseInt(st.nextToken());
			}
			
			long result=0;
			int max =0;
			for(int j=d-1;j>=0;j--) {
				if(max<arr[j]) {
					max=arr[j];
				}else {
					result+=max-arr[j];
				}
			}
			sb.append(result).append("\n");
		}
		
		System.out.println(sb);
	}

}