Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

전공공부

[Programmers] 뒤에 있는 큰 수 찾기 본문

Study/Problem Solving

[Programmers] 뒤에 있는 큰 수 찾기

monitor 2023. 2. 7. 19:56

스택 자료구조 특성상 FIFO을 이용한 풀이이다.

 

1) 스택에 인덱스 값을 저장

 

2) 하강하는 배열이면 바로 스택에 추가하여 관리한다.

 

3) 스택의 가장 peek 값인 제일 최신의 앞 자리수와 현재 들어온 뒷 자리인 값을 비교

 

4) 뒷 자리가 스택의 peek 부분 보다 크다면 바로 뒤에 존재하는 큰 수 이다. 이 때의 값을 answer 배열에 저장하고 이때 사용된 numbers 값은 스택에 집어 넣어서 다음에 나올 뒷 숫자와 비교를 진행한다.

 

※ 스택에 들어가는 수들은 다음 숫자와의 비교를 위해서 들어가고 스택은 FIFO 인 것을 생각해야 보인다.

import java.util.*;
class Solution {
    public static int[] solution(int[] numbers) {
        int[] answer = new int[numbers.length];
        Arrays.fill(answer, -1);
        Stack<Integer> st = new Stack<>();
        for(int i = 0; i < numbers.length; i++) {
        	if(st.isEmpty() || numbers[i] < numbers[i-1]) {
        		st.add(i);
        	}else {
        		while(!st.isEmpty() && numbers[st.peek()] < numbers[i]) {
        			answer[st.pop()] = numbers[i];
        		}
        		st.add(i);
        	}
        }
        return answer;
    }
}

'Study > Problem Solving' 카테고리의 다른 글

[PROGRAMMERS] 숫자 변환하기  (0) 2023.05.01
[PROGRAMMERS] 요격 시스템  (0) 2023.04.30
[PROGRAMMERS]연속된 부분 수열의 합  (0) 2023.04.14
[BOJ 13458] 시험 감독  (0) 2023.03.30
[BOJ 14501] 퇴사  (0) 2023.03.29