본문 바로가기
알고리즘 & 자료구조/프로그래머스

뒤에 있는 큰 수 찾기

by 신재권 2023. 2. 27.
package programmers;

import java.util.Arrays;
import java.util.Stack;

public class 뒤에_있는_큰_수_찾기 {

   //배열의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 큰 수
   //큰수가 존재하지 않으면 -1을 담음

   public static int[] solution(int[] numbers) {
      int[] answer = new int[numbers.length];
      Stack<Integer> s = new Stack<>();

      for (int i = 0; i < numbers.length; i++) {
         while (!s.isEmpty() && numbers[s.peek()] < numbers[i]) {
            answer[s.pop()] = numbers[i];
         }
         s.push(i);
      }
      while (!s.isEmpty()) {
         answer[s.pop()] = -1;
      }

      return answer;
   }

   public static void main(String[] args) {
      System.out.println(Arrays.toString(solution(new int[] {2, 3, 3, 5})));
      System.out.println(Arrays.toString(solution(new int[] {9, 1, 5, 3, 6, 2})));
   }
}

'알고리즘 & 자료구조 > 프로그래머스' 카테고리의 다른 글

수식 최대화  (0) 2023.03.01
방금그곡  (0) 2023.02.28
두 큐 합 같게 만들기  (0) 2023.02.26
괄호 변환  (0) 2023.02.24
롤케이크 자르기  (0) 2023.02.23