[프로그래머스] 주식가격 (JS)

hhkim·2023년 9월 25일
0

Algorithm - JavaScript

목록 보기
141/188
post-thumbnail

풀이 과정

  1. 0으로 초기화한 결과 배열 생성
  2. 가격 배열의 끝에서부터 반복
  3. 스택 마지막 값이 현재 가격보다 같거나 높은 동안 pop
  4. 스택 마지막 값의 인덱스와 현재 가격 인덱스 차이를 결과에 저장
  5. 스택에 현재 값과 인덱스 넣기

코드

function solution(prices) {
  const len = prices.length;
  const result = Array(len).fill(0);
  const stack = [];
  for (let i = len - 1; i >= 0; --i) {
    while (stack.length && stack.at(-1)[0] >= prices[i]) stack.pop();
    result[i] = stack.length ? stack.at(-1)[1] - i : len - i - 1;
    stack.push([prices[i], i]);
  }
  return result;
}

🤔

이전에 풀었던 뒷큰수 문제 힌트에서 이 문제와 비슷한 유형이라는 걸 미리 봤기 때문에 풀 수 있었다. 처음에는 효율성 3번을 통과하지 못했는데, prices.length를 그때그때 구하지 않고 미리 변수를 만들어 저장해뒀더니 통과가 됐다.

0개의 댓글