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

홍성진·2023년 2월 10일
0

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

stack을 활용하는 문제입니다. numbers를 돌며 stack에 값을 넣을건데, numbers에서 peek보다 큰 수가 나오면(=peek의 뒷큰수라면) answer가 채워지지 않은 곳까지 가서 채웁니다.

import java.util.*;

class Solution {
    public int[] solution(int[] numbers) {
        int cnt = 0;
        int[] answer = new int[numbers.length];
        Stack<Integer> stack = new Stack<>();
        
        for (int i = 0; i < answer.length; i++) {
            answer[i] = -1;
        }
        
        for (int i = 0; i < numbers.length; i++) {
            int cur = numbers[i];
            int idx = i - 1;
            while (!stack.isEmpty() && stack.peek() < cur) {
                while (answer[idx] != -1) {
                    idx--;
                }
                stack.pop();
                answer[idx] = cur;
            }
            stack.add(cur);
        }
        return answer;
    }
}

0개의 댓글