[프로그래머스, 42584] 주식가격 (java)
Problem Solving/Programmers

[프로그래머스, 42584] 주식가격 (java)

728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

728x90

메모리: 77.3 MB, 시간: 29.81 ms

사용 알고리즘: 스택

import java.util.*;

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        
        // {prices, index}
        Deque<int[]> stack = new ArrayDeque<>();
        
        int[] tmp;
        for(int i = 0; i < prices.length; i++) {
            
            while(!stack.isEmpty() && stack.peekLast()[0] > prices[i]) { // 가격이 떨어진 경우
                tmp = stack.pollLast();
                answer[tmp[1]] = i - tmp[1];
            }
            
            stack.offerLast(new int[] {prices[i], i});
        }
        
        while(!stack.isEmpty()) {
            tmp = stack.pollLast();
            answer[tmp[1]] = prices.length - 1 - tmp[1];
        }
        
        return answer;
    }
}
728x90