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

최민길(Gale)·2023년 7월 6일
1

알고리즘

목록 보기
91/172

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/154539?language=java

이 문제는 스택을 이용하여 풀 수 있습니다. 사실 이 문제는 백준의 오큰수 문제(https://velog.io/@gale4739/%EB%B0%B1%EC%A4%80-17298-%EC%98%A4%ED%81%B0%EC%88%98Java)와 풀이가 완전히 유사합니다. 인덱스를 스택에 저장한 후 다음 숫자가 스택의 피크보다 크다면 스택이 비거나 작을 때까지 스택을 계속 pop하여 다음 숫자값을 해당 인덱스에 넣어주시면 됩니다.

다음은 풀이입니다.

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=0;i<numbers.length;i++){
            if(!stack.isEmpty()){
                while(!stack.isEmpty()){
                    if(numbers[stack.peek()] < numbers[i]) answer[stack.pop()] = numbers[i]; 
                    else break;
                }
            }
            
            stack.add(i);
        }
        
        return answer;
    }
}

profile
저는 상황에 맞는 최적의 솔루션을 깊고 정확한 개념의 이해를 통한 다양한 방식으로 해결해오면서 지난 3년 동안 신규 서비스를 20만 회원 서비스로 성장시킨 Software Developer 최민길입니다.

0개의 댓글