* 해당 포스트는 <파이썬 알고리즘 인터뷰> 공부 후 정리 목적으로 작성되었습니다. *
leetcode 739번 ( https://leetcode.com/problems/daily-temperatures/description/ )
풀이 방법 1.
스택을 사용한다.
결과로는 각 i번째 날 이후로 따뜻해지기 위해 기다려야 하는 일 수를 리턴해야 하므로, 스택 및 결과에는 인덱스 정보를 저장하는 것이 좋겠다.
우선 큰 틀에서 for loop를 사용해서 temperatures의 전체 요소를 순회할 수 있도록 한다.
각 시행의 값(i번째 날의 인덱스와 온도)을 가지고, 우선 스택에 값이 있는지를 확인한다.
파이썬에서는 for문으로 리스트의 인덱스와 값을 동시에 순회하고 싶을 때 enumerate()를 사용할 수 있다.
for index, temperature in enumerate(temperatures):
# index: index
# temperature: value
이후 스택의 가장 위에 있는 값보다 i번째 날의 온도가 더 높으면, while 문을 사용해서 하나씩 스택에서 제거한다.
while stack and temperature > temperatures[stack[-1]]:
# pop index of day from stack
# assign value of index to answer list
'알고리즘' 카테고리의 다른 글
ch9-5(leetcode 232). 스택을 이용한 큐 구현 (0) | 2023.01.11 |
---|---|
ch9-4(leetcode 225). 큐를 이용한 스택 구현 (0) | 2023.01.11 |
ch9-2(leetcode 316). 중복 문자 제거 (0) | 2023.01.10 |
ch9-1(leetcode 20). 유효한 괄호 (0) | 2023.01.10 |
ch6-6(leetcode 5). 가장 긴 팰린드롬 부분 문자열 (0) | 2023.01.10 |