[Programmers / Level 2] 42584. 주식가격 (Java)

이하얀·2025년 2월 23일
0

🕊️ 프로그래머스

목록 보기
100/115

💡 Info




입출력 조건




입출력 예시




문제 이해


  • 주식 가격을 1초 단위로 변화를 배열로 만든다음 -> 가격이 하락하지 않은 기간을 배열로 반환하면 되는 문제


알고리즘


풀이 시간 : 35분

  • 가격이 떨어질 때까지 stack에 인덱스 저장
  • 가격이 떨어지는 순간 -> stack에서 이전 인덱스를 꺼내 현재 인덱스와의 차이 계산
  • 끝까지 남아 있는 stack의 요소들은 끝까지 가격이 유지된 경우이니 n - index - 1로 처리
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[i] < prices[stack.peek()]) {
                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;
    }
}


결과

profile
언젠가 내 코드로 세상에 기여할 수 있도록, Data Science&BE 개발 기록 노트☘️

0개의 댓글