프로그래머스 - 주식가격 - Stack - Java

chaemin·2024년 5월 14일
0

프로그래머스

목록 보기
41/64

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/42584

2-1. 단순풀이

언제나 쉽게 생각하자. 쉽게 생각해서 바로 풀리는 경우도 있다.

3-1. [단순풀이] 코드

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        for(int i = 0; i < prices.length; i++){
            for(int j = i + 1; j < prices.length; j++){
                answer[i]++;
                if(prices[i] > prices[j])
                    break;
            }
        }
        return answer;
    }
}

2-2. Stack 풀이

풀이가 좀 어려운데
참고 풀이 여기를 보면 좀 이해가 빠를 수 있다.

해당 위치에서의 값이 ✨언제 떨어지는지가 포인트이기 때문에 stack에 담아두었다가 peek한 값이 자기보다 클 경우 ✨그 차이 만큼을 answer배열에 담아두는 것이다.

3-2. [Stack] 코드

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[stack.peek()] > prices[i]){
                int index = stack.pop();
                answer[index] = i - index;
            }
            
            stack.push(i);
        }
        
        while(!stack.isEmpty()){
            int index= stack.pop();
            answer[index] = prices.length - index - 1;
        }
        return answer;
    }
}

0개의 댓글