[알고리즘] 프로그래머스 - 주식 가격

June·2021년 6월 26일
0

알고리즘

목록 보기
225/260

프로그래머스 - 주식 가격

내 풀이

public class programmers_42584 {

    public static void main(String[] args) throws IOException {
        System.out.println(solution(new int[]{1, 2, 3, 2, 3}));
        System.out.println(solution(new int[]{1, 2, 3, 2, 3, 1}));
        System.out.println(solution(new int[]{5, 8, 6, 2, 4, 1}));

    }

    public static 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 pop = stack.pop();
                answer[pop] = i - pop;
            }
            stack.add(i);
        }

        while (!stack.isEmpty()) {
            int pop = stack.pop();
            answer[pop] = prices.length -1 - pop;
        }
        Arrays.stream(answer).forEach(s -> System.out.print(s + " "));
        return answer;
    }
}

백준의 탑과 매우 유사한 문제이다.
포인트는 스택에 값이 아닌 인덱스를 넣고, 만약 조건을 만족하지 않는 값을 만나면 스택에서 조건을 만족하지 않는 것들을 계속 꺼내주는 것이다.

0개의 댓글