[LeetCode] Daily Temperatures

yoonene·2023년 2월 7일
0

알고리즘

목록 보기
49/62

첫 번째 제출

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        stack = []
        result = [0] * len(temperatures)

        for i, t in enumerate(temperatures):
            while stack:
                if temperatures[stack[-1]] < t:
                    result[stack[-1]] = i - stack[-1]
                    stack.pop()
                else:
                    break
            stack.append(i)

        return result

두 번째 제출

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        stack = []
        result = [0] * len(temperatures)

        for i, t in enumerate(temperatures):
            while stack and temperatures[stack[-1]] < t:
                    c = stack.pop()
                    result[c] = i - c
            stack.append(i)

        return result

1, 2 번째 제출 그냥 똑같은건데 조건문을 while문에 포함시켰을 뿐임. 하지만 더 간결해서 보기 좋음.

+)

  • index를 stack에 넣고 그때그때 temperatures에서 조회하면 됐는데
    처음에는 stack에 [t, idx] 형태로 넣어서 했었다. 그러니 exceed 오류가 났었다.

  • 처음에는 돌 때마다 result[i] += 1로 풀었었다. exceed 오류가 났다.
    -> 그저 현재 index와 stack에서 꺼낸 index의 차이만 구하면 끝인데 생각을 못했다.

profile
NLP Researcher / Information Retrieval / Search

0개의 댓글