[Java] 백준 11501번: 주식

U·2024년 10월 14일

백준

목록 보기
64/116

[문제 바로 가기] - 주식

💡 접근 방식

문제 자체는 Stack으로 풀이해서 간단하게 풀었는데 중요한 부분이 있다.
문제에서 답은 부호있는 64bit 정수형으로 표현 가능하다라고 나와있는데 int형은 32bit까지만 표현 가능하기 때문에 sum을 long타입으로 선언해주어야 한다.
이렇게 해주지 않으면 런타임 에러가 나기 때문에 문제 잘 확인하기!


풀이

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

/**
 * 백준 11501번 주식
 * - 런타임에러가 나는 이유는 int 타입은 32bit까지 표현하기 떄문에 sum을 long 타입으로 바꿔줘야 함
 */
public class Main {
	public static void main(String[] agrs) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		int T = Integer.parseInt(br.readLine());
		
		for (int tc = 0; tc < T; tc++) {
			int N = Integer.parseInt(br.readLine());
			
			Stack<Integer> stack = new Stack<>();
			st = new StringTokenizer(br.readLine());
			
			for (int i = 0; i < N; i++) {
				int num = Integer.parseInt(st.nextToken());
				stack.push(num);
			}
			
			long sum = 0;
			int max = stack.pop();
			while (!stack.isEmpty()) {
				int cur = stack.peek();
				
				if (max > cur) sum += max - cur;
				else max = cur;
				stack.pop();
			}
			
			System.out.println(sum);
		}
	}
}
profile
백엔드 개발자 연습생

0개의 댓글