[문제 링크]
https://school.programmers.co.kr/learn/courses/30/lessons/42584
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[풀이 과정]
Stack에 주식 인덱스를 하나하나 넣으면서 전보다 떨어진 주식들을 먼저 구해주고
나머지 끝까지 가격이 안 떨어진 경우를 처리해준다.
[코드]
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int n = prices.length;
int[] answer = new int[n];
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < n; i++) {
// 가격이 떨어졌을 때 처리
while (!stack.isEmpty() && prices[stack.peek()] > prices[i]) {
int idx = stack.pop();
answer[idx] = i - idx;
}
stack.push(i);
}
// 끝까지 가격이 안 떨어진 경우 처리
while (!stack.isEmpty()) {
int idx = stack.pop();
answer[idx] = n - idx - 1;
}
return answer;
}
}
[회고]
생각보다 간단하면서 헷갈리고 어려웠습니다.
질문과 피드백은 언제나 환영입니다.
감사합니다.
'CodingTest > Programmers' 카테고리의 다른 글
[Programmers] 모의고사 (1) | 2025.04.13 |
---|---|
[Programmers] 최소직사각형 (0) | 2025.04.12 |
[Programmers] 다리를 지나는 트럭 (0) | 2025.04.10 |
[Programmers] 프로세스 (0) | 2025.04.07 |
[Programmers] 올바른 괄호 (1) | 2025.04.03 |