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

Bong2·2024년 5월 4일
0

알고리즘

목록 보기
10/63

문제 큰수 찾기

문제접근

  • 처음에는 완전 탐색으로 뒤에 있는 모든 숫자들을 탐색하고 비교하면서 할려고 했지만 O(N*N)으로 시간초과가 나올 거 같아서 고민을 하던 중 가장 가까이 있는 수를 보고 스택을 이용하고자 했습니다.
    1. 맨 뒤의 숫자부터 비교
    2. 스택이 비어있지 않고 현재의 숫자보다 작거나 같은 경우 스택에서 제거
    3. 2번에서 제거되지 않는 숫자는 가장 가까이 있고 큰수이므로 결과저장
    4. 현재 값은 스택에 저장
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() && numbers[i] >= stack.peek())
            {
                stack.pop();
            }
            
            if(!stack.isEmpty())
            {
                answer[i] = stack.peek();
            }
            
            stack.push(numbers[i]);
        }
        
        return answer;
    }
}
profile
자바 백엔드 개발자로 성장하자

0개의 댓글