https://programmers.co.kr/learn/courses/30/lessons/42584
코딩테스트 연습 - 주식가격
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00
programmers.co.kr
저는 스택을 통해 문제를 해결하였습니다.
스택은 현재 가격보다 작은 인덱스를 가지고 있게 하여 해당 값이 작다면 현재 인덱스를 비교하여 가격이 안 떨어지고 얼마나 있었는지를 계산하였습니다.
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int size = prices.length;
int[] answer = new int[size];
int upLength = 0;
ArrayDeque<Integer> stack = new ArrayDeque<>();
for(int i = 0 ; i < size ; i++){
while(!stack.isEmpty() && prices[i] < prices[stack.peek()]){
int index = stack.poll();
answer[index] = i -index;
}
stack.push(i);
}
while(!stack.isEmpty()){
int index = stack.poll();
answer[index] = size -1 -index;
}
return answer;
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 멀리 뛰기 (JAVA) (0) | 2022.06.17 |
---|---|
프로그래머스 다음 큰 숫자 (JAVA) (0) | 2022.06.16 |
프로그래머스 큰 수 만들기 (JAVA) (0) | 2022.06.14 |
프로그래머스 2 x n 타일링 (JAVA) (0) | 2022.06.13 |
프로그래머스 소수 찾기 (JAVA) (0) | 2022.06.12 |