https://school.programmers.co.kr/learn/courses/30/lessons/42584
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
풀이
감소하지 않았다면 스택에 push하고 감소 하는 값이 발생할 경우 pop 해준다
prices 전체를 돌았음에도 스택에 남아 있는 것들은 감소 하지 않은 것들이기 때문에 prices의 길이 - index - 1 을 넣어준다
코드
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[i] < prices[stack.peek()]){
answer[stack.peek()] = i - stack.pop();
}
stack.push(i);
}
while (!stack.isEmpty()) {
answer[stack.peek()] = prices.length - stack.pop() - 1;
}
return answer;
}
}
'코딩테스트' 카테고리의 다른 글
[큐] 프로그래머스 프로세스 자바 java (0) | 2023.04.24 |
---|---|
[스택] 프로그래머스 같은 숫자는 싫어 자바 java (0) | 2023.04.24 |
[스택] 프로그래머스 올바른 괄호 자바 java (0) | 2023.04.24 |
[그래프] 프로그래머스 순위 자바 (Java) (0) | 2023.04.10 |
[그래프] 프로그래머스 가장 먼 노드 자바 (Java) (0) | 2023.04.10 |
댓글