본문 바로가기
CodingTest/Programmers

[Programmers] 주식가격

by 창브로 2025. 4. 12.

[문제 링크]

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