Java/Java-1차캐시

[프로그래머스] 주식가격

프로버티기 2025. 4. 7. 17:00

문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/42584

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

입출력

prices [ 1, 2, 3, 2, 3]

return [4, 3, 1, 1, 0] 

 

 


아이디어


초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.

 

 

코드 

 

import java.util.*;
class Solution {
    static int N;
    public int[] solution(int[] prices) { // 주식가격이 담긴 배열
        N = prices.length;
        int[] answer = new int[N];
        
        Stack<Integer> stack = new Stack<>();
        
        for(int i = 0; i < N; i++) {
            while(!stack.isEmpty() && prices[i] < prices[stack.peek()]){
                int prev = stack.pop();
                answer[prev] = i - prev; // (i - prev)개수 
            }
            stack.add(i); // 인덱스 저장 
        }
        
        while (!stack.isEmpty()) {
            int prev = stack.pop();
            answer[prev] = N - prev - 1;
        }
        return answer;
    }
}