스택이란?!
한마디로 탑쌓기 형식이다~ 라는 뜻이다.
우리가 탑을 쌓을때 아래서 위로 쌓고 중간 것을 빼려면
위에 것을 하나씩 제거후에 중간 것을 제거 해줘야한다. 스택도 마찬가지다
스택의 사용 사례
- 웹 브라우저 방문기록(뒤로가기)
- 실행 취소 (undo)
- 역순 문자열 만들기
- 후위 표기법 계산
해당사례에 사용이 된다는건 알겠다. 하지만 문제를 풀면 스택을 사용하긴 하지만 응용이 안되서 어려운것 같다.
아래의 풀이는 일일 온도의 풀이이다
def dailyTemperatures(T):
ans = [0] * len(T)
stack = []
for i, t in enumerate(T):
while stack and T[stack[-1]] < t:
cur = stack.pop()
ans[cur] = i - cur
stack.append(i)
return ans
이 문제에서 stack 을 뽑아 현재 인덱스에서 빼준다
저 풀이법을 보고 진짜 와... 했다 저런 생각을 어떻게 했지 저렇게 말고는 풀지 못하나?...
근데 나는 아직 풀지못한다 ..ㅎㅎ
여러방법으로 시도를 해봤지만 이미 나의 뇌는 풀이법으로 가득 차 버려서 더이상 다른것을 생각하지 못하는 것 같다 나중에 나의 알고리즘 실력이 늘고 자주적인 풀이법을 생각할 날이 온다면 언젠가 다시 한번 풀어보고싶다.