hsskey / algorithm-practice

🧑‍💻 Solving algorithms to level up
0 stars 0 forks source link

Daily Temperatures #13

Open hsskey opened 1 month ago

hsskey commented 1 month ago

Daily Temperatures

매일의 온도를 나타내는 int형 배열 temperatures가 주어진다. answer 배열의 원소 answer[i]는 i번 째 날의 온도보다 더 따뜻해지기까지 며칠을 기다려야하는지 나타낸다. 만약 더 따뜼해지는 날이 없다면 answer[i] === 0이다. answer 배열을 반환하는 함수를 구현하시오

📝 제약조건

💡 예시

문제 해결 과정

Step 1: 문제 이해하기

Step 2: 접근 방법

Step 3: 코드 설계

answer = []
stack = [] // 스택선언
for t in temperature
    while(stack.top < item)
        stack.pop()
        며칠을 기다렸는지
        answer 업데이트
    stack.push([item, index])

console.log(answer)

Step 4: 코드 구현

/**
 * @param {number[]} temperatures
 * @return {number[]}
 */
var dailyTemperatures = function(temperatures) {
    const stack = []
    const answer = new Array(temperatures.length).fill(0)

    for(let i = 0; i < temperatures.length; i++) {
        const current_temp = temperatures[i]
        while(stack && stack.at(-1)?.[1] < current_temp) {
            const [prev_day, _] = stack.pop()
            answer[prev_day] = i - prev_day
        }
        stack.push([i, temperatures[i]])

    }

    return answer
};

console.log(dailyTemperatures([5, 4, 3, 7]))