Oops, All Code!/🤯 Oops, My Algorithm!

꒰ྀི 02. 프로그래머스:: 주식가격

밍동망동 2024. 7. 15. 23:27

문제 설명

 

- prices에는 초 단위로 기록된 주식 가격이 담겨있음.

- 각 시점에 주식 가격이 떨어지지 않은 기간을 초 단위로 계산

 

자료구조 선택

 

각 시점에서 가격이 떨어지지 않은 기간을 계산해야함.

먼저 들어온 데이터가 먼저 나가는 자료구조 큐(Queue)를 사용함

 

해결 과정

 

1. 초기화

  - prices 배열을 순회하기 위해 인덱스 사용

 

2. 큐를 이용한 순회

  - prices 배열을 순서대로 탐색

  - 각 시점의 가격을 큐에 저장하고 가격 변동을 확인

  - 떨어진 시점에서 큐의 가격과 비교해 계산

function solution(prices) {
    const n = prices.length;
    const answer = new Array(n).fill(0);
    const stack = [];

    for (let i = 0; i < n; i++) {
        while (stack.length > 0 && prices[stack[stack.length - 1]] > prices[i]) {
            const j = stack.pop();
            answer[j] = i - j;
        }
        stack.push(i);
    }

    while (stack.length > 0) {
        const j = stack.pop();
        answer[j] = n - j - 1;
    }

    return answer;
}

 

큐를 이용해 가격이 떨어지지 않은 기간을 효율적으로 계산했다.

필요한 계산을 빠르게 수행할 수 있었다.

 

2단계의 문제들은 직접 자료구조를 구현하거나,

내장된 자료구조를 사용하는 것이 관건으로 판단된다.