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단계의 문제들은 직접 자료구조를 구현하거나,
내장된 자료구조를 사용하는 것이 관건으로 판단된다.