[LeetCode] 230131 Daily Temperature

김동연·2024년 1월 31일

알고리즘

목록 보기
7/12

Stack

Daily Temperature

설명

문제는 쉬운편이다. Stack의 기본 문제인 탑 문제와 같은 문제이다.
백준 탑문제

과정

  1. 날짜별로 온도를 조회한다.
  2. 스택이 비어있지 않을 경우 스택의 마지막 온도와 현재 온도를 비교한다
    2.1 현재 온도가 더 클경우 스택에서 마지막 자료를 빼고 그 날짜와 현재 날짜의 차이를 해당 스택의 날짜에 저장한다.
    2.2 현재 온도가 같거나 더 작을 경우 while문을 종료한다.
    2.3 stack이 빌때까지 2를 반복
  3. 스택에 현재 날짜와 온도를 저장한다.

순서도

과정

import java.util.*;
class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        final Stack<int[]> stack = new Stack<>();
        int[] result = new int[temperatures.length];
        int idx = 0;
        for(int temp : temperatures){
            while(!stack.isEmpty()){
                if (stack.peek()[1]>=temp){
                    break;
                }
                int[] next = stack.pop();
                result[next[0]] = idx - next[0];
            }
            stack.add(new int[]{idx,temp});
            idx ++;
        }
        return result;
    }
}

0개의 댓글