알고리즘 & 자료구조/문제 풀이
[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 주식가격
수수다
2026. 7. 29. 15:16
https://school.programmers.co.kr/learn/courses/30/lessons/42584
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
스택에는 아직 가격이 떨어진 시점을 찾지 못한 인덱스를 저장한다.
현재 가격이 스택 맨 위 인덱스의 가격보다 낮다면, 해당 주식은 현재 시점에 처음 가격이 떨어진 것이다.
answer[lastIdx] = i - lastIdx;
가격이 떨어진 인덱스를 계속 제거하기 때문에 스택의 가격은 아래에서 위로 비감소 순서를 유지한다.
전체 순회 후 스택에 남은 인덱스는 끝까지 가격이 떨어지지 않은 경우이므로 마지막 시점까지의 시간을 계산한다.
answer[idx] = prices.length - 1 - idx;
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int len = prices.length;
int[] answer = new int[len];
ArrayDeque<Integer> st = new ArrayDeque<>();
st.addLast(0);
for(int i=1; i<prices.length; i++) {
while(!st.isEmpty() && prices[i] < prices[st.peekLast()]) {
int lastIdx = st.pollLast();
answer[lastIdx] = i - lastIdx;
}
st.addLast(i);
}
while(!st.isEmpty()) {
int idx = st.pollLast();
answer[idx] = prices.length - idx - 1;
}
return answer;
}
}
