Java

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

프로버티기 2025. 4. 2. 15:37

문제

 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

아이디어

 

stack 에 자신보다 큰 수만 남겨두기 

 

 

코드 

 

import java.io.*;
import java.util.*;
class Solution {
    public int[] solution(int[] numbers) {
        int[] answer = new int[numbers.length];
        Arrays.fill(answer, -1);
        Stack<Integer> stack = new Stack<>();
        // 오른쪽 -> 왼쪽 : 자기보다 큰 숫자들만 남겨놓기 
        for(int i = numbers.length - 1; i >=0 ; i--) {
            while(!stack.isEmpty() && stack.peek() <= numbers[i]) {
                stack.pop();
            }
            if(!stack.isEmpty()) {
                answer[i] = stack.peek();
            }
            stack.add(numbers[i]);
        }
        return answer;
    }
}

'Java' 카테고리의 다른 글

[백준] 2098 : 외판원 순회  (0) 2025.04.06
[프로그래머스] 후보키  (0) 2025.04.03
[백준] 17472 : 다리 만들기 2  (0) 2025.04.01
[백준] 14890 : 경사로  (0) 2025.04.01
[프로그래머스] 연속 펄스 부분 수열의 합  (0) 2025.04.01