- 파이썬 알고리즘 인터뷰 23번 문제
2020.01.29
3 try / Failed
class Solution:
def dailyTemperatures(self, T: List[int]) -> List[int]:
arr = []
for i in range(len(T)):
exist = False
count = 0
for j in range(i + 1, len(T)):
count += 1
if T[i] < T[j]:
exist = True
arr.append(count)
break
if not exist:
arr.append(0)
return arr
- 브루트포스 방법을 이용하여 풀었다.
-
- 런타임 에러가 발생했다!
- O(n)에 풀 수 있는 방법을 생각해야 한다.
class Solution:
def dailyTemperatures(self, T: List[int]) -> List[int]:
answer = [0] * len(T)
stack = []
for i, cur in enumerate(T):
while stack and cur > T[stack[-1]]:
last = stack.pop()
answer[last] = i - last
stack.append(i)
return answer
T = [55, 38, 53, 81, 61]
를 가져왔다.
▶ 여전히 이해가 어렵다면 🌵여기를 눌러🌵 천천히 이해해보자
- stack의 원리를 실제로 잘 사용한 문제인 것 같다.
- 아직은 좀 낮선 방식의 풀이인 것 같다ㅠㅠ
빡!
남을 수 있을까 고민하다가 아래의 예시를 한번 만들어 보었다.스택의 원리 + 위의 문제 해결 팁
을 스토리텔링 식으로 이해하기 쉽도록 한번 만들어봤다.