문제풀이/프로그래머스

[프로그래머스] - 뒤에 있는 큰 수 찾기

얄루몬 2023. 4. 4. 11:03

java

import java.util.*;

class Solution {
    public int[] solution(int[] numbers) {
        int[] answer = new int[numbers.length];
        Arrays.fill(answer, -1);
        Stack<Integer> s = new Stack<>();
        s.push(0);

        for (int now = 0 ; now < numbers.length; now++){
            while (!s.isEmpty()){
                int before = s.pop();
                if(numbers[now] > numbers[before]){
                    answer[before] = numbers[now];
                }else{
                    s.push(before);
                    break;
                }
            }
            s.push(now);
        }
        
        return answer;
    }
}

 Python

def solution(numbers):
    stack = []
    answer = [-1 for i in range(len(numbers))]

    for i in range(len(numbers)):
            while stack and numbers[stack[-1]] < numbers[i]:
                answer[stack.pop()] = numbers[i]
            stack.append(i)
    
    return answer