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

최민길(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개의 댓글

관련 채용 정보