[leetcode100] 739. Daily Temperatures (JS)

devmomo·2021년 4월 13일
0

알고리즘

목록 보기
51/52
post-thumbnail

739. Daily Temperatures

문제
매일의 온도가 담긴 배열 T가 파라미터로 주어졌을 때, 해당일 온도보다 더 따뜻한 날을 기다리려면 얼마나 더 기다려야 하는지 (Idx의 차)를 계산하고 이를 return하는 함수 만들기

풀이

var dailyTemperatures = function(T) {
    let stack = []
    let ans = new Array(T.length)
    for(let i = T.length-1; i >= 0; i--) {
        let top = stack[stack.length-1]
        while(stack.length && top.val <= T[i]) {
            stack.pop()
            top = stack[stack.length-1]
        }  
        if(stack.length) {
            ans[i] = top.index - i
        } else {
            ans[i] = 0
        }  
        stack.push({val: T[i], index: i})
    }
    return ans
};

stack (LIFO) 자료구조를 활용해서 문제를 풀었다.
ans는 T배열의 길이로 초기화를 시킨 배열이고, 이후 반복문을 돌며 처리.
** stack 자료구조 활용하기에 매우 좋은 문제라고 생각하고,
stack에 쌓이는 과정 그려보면서 이해하고 풀이

profile
FE engineer

0개의 댓글