import java.util.*;

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        Stack<Integer> stack = new Stack<>();
        
        for(int i=0; i<prices.length; i++) {
            while(!stack.isEmpty() && prices[stack.peek()]>prices[i]) {
                int index = stack.peek();
                answer[index] = i-index;
                stack.pop();                
            }
            
            stack.push(i);
        }
        
        while(!stack.isEmpty()) {
            int index = stack.peek();
            answer[index] = prices.length-1-index;
            stack.pop();
        }
        
        return answer;
    }
}

'Problem Solving > Programmers' 카테고리의 다른 글

[Level 2] 교점에 별 만들기  (0) 2022.04.06
[Level 2] 구명보트  (0) 2022.04.06
[Level 2] 영어 끝말잇기  (0) 2022.04.06
[Level 2] 삼각 달팽이  (0) 2022.04.06
[Level 2] 2개 이하로 다른 비트  (0) 2022.04.06