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

hhkim·2023년 9월 21일
0

Algorithm - JavaScript

목록 보기
140/188
post-thumbnail

풀이 과정

  1. -1로 초기화된 정답 배열 생성
  2. 숫자 배열 뒤에서부터 반복
  3. 현재 숫자가 스택 마지막 숫자보다 크거나 같은 동안 마지막 숫자 pop
    스택이 비어있지 않으면 스택 마지막 숫자를 뒷큰수로 정답 배열에 저장
    스택에 현재 숫자 넣기
    => 스택에 항상 가장 가까우면서 큰 숫자가 저장되어 있게 됨

코드

function solution(numbers) {
  const result = Array(numbers.length).fill(-1);
  const stack = [];
  for (let i = numbers.length - 1; i >= 0; --i) {
    while (stack.length && stack.at(-1) <= numbers[i]) stack.pop();
    if (stack.length) result[i] = stack.at(-1);
    stack.push(numbers[i]);
  }
  return result;
}

🤔

혼자는 절대 못 풀었을 문제
'가장 가까운 수'라는 말에서 스택을 사용해야 한다는 힌트를 얻을 수 있다고 한다.

0개의 댓글