알고리즘/큐, 스택

13. 스택 - 지금보다 큰 값은 언제 나타날까?

jwjwvison 2021. 8. 27. 19:56

https://leetcode.com/problems/daily-temperatures/

 

Daily Temperatures - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

 매일의 화씨 온도 리스트 T를 입력받아서, 더 따뜻한 날씨를 위해서는 며칠을 더 기다려야 하는지를 출력하라.

 

 이 문제도 스택을 이용하면 상당히 좋은 성능으로 문제를 해결 할 수 있다.

 

 1. answer=[0]*len(temperature)로 두어서 정답값을 바로바로 참조해서 변경할 수 있도록 한다.

 2. enumerate를 사용해서 인덱스를 바로 사용하면 더 간단히 해결할 수 있다.

 3. stack에 인덱스를 집어넣은 다음 stack[-1]의 인덱스를 가지는 온도값보다 높은 온도를 갖는 인덱스가 나올때 까지 인덱스를 집어 넣는다.

 4. 결과(answer)를 꼭 차례대로 주입해야 할 필요는 없다는걸 배웠다.

 5. 'while stack and (조건) / 옆에 조건에 해당하지 않으면 stack.append()' 이런 코드가 스택 문제에서 잘 사용되는것 같다.

 

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        answer=[0] * len(temperatures)
        stack=[]
        
        for i,temp in enumerate(temperatures):
            while stack and temperatures[stack[-1]] < temp:
                last=stack.pop()
                answer[last]=i-last
            stack.append(i)
            
        return answer

'알고리즘 > 큐, 스택' 카테고리의 다른 글

15. 해시 - 상위 K 빈도 요소(우선순위 큐, *,zip)  (0) 2021.08.30
14. 큐  (0) 2021.08.30
12. 스택 - 중복문자 제거  (0) 2021.08.26
11. 스택 - 유효한 괄호  (0) 2021.08.26
10. 선형 자료 구조 - 스택  (0) 2021.08.26