JS코딩테스트 문제풀이(Daily Temperatures)

Minji Lee·2023년 9월 5일
0

JS코딩테스트

목록 보기
8/122
post-thumbnail

Daily Temperatures

Daily Temperatures

문제

Given an array of integers temperatures represents the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the ith day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0 instead.
→ 온도가 높아질때까지의 날짜 일수 구하기

코드

var dailyTemperatures = function(temperatures) {
    let answer = new Array(temperatures.length).fill(0);;
    let stack = [];
    for(let i=0;i<temperatures.length;i++){
        while(stack.length && (stack[stack.length-1][1]<temperatures[i])){
            let popItem = stack.pop();
            answer[popItem[0]]=i-popItem[0];
        }
        stack.push([i, temperatures[i]]);
    }
    return answer;
};

풀이 및 해설

  • 이중 for문 사용하면 시간 초과 뜸 → 1 <= temperatures.length <= 105 (제약조건)
  • O(n)으로 문제 풀어야함 → stack 이용하여 풀기
    ❗️ 스택(stack)을 사용하는 경우 → 특정 조건이 되었을 때 정답을 낼 수 있는 경우 사용
  • temperatures에 있는 원소를 하나씩 스택에 넣으며 먼저 들어간 원소가 더 낮은 온도일 경우 pop하여 소요일자 추가

JS 문법

  • 배열 원하는 수로 채우기 let arr = new Array(배열 크기).fill(원하는 수)
  • stack 구현
    • 배열 이용
    • 값 넣기 → push 메서드 이용
    • 값 빼기 → pop 메서드 이용

0개의 댓글