본문 바로가기

카테고리 없음

[leetcode] 739. Daily Temperatures _ python3

739. 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

 

풀이 코드

일일 온도가 담겨있는 리스트를 줬을 때, 더 따뜻한 날씨가 되려면 며칠 더 기다려야 하는지 리스트로 리턴해야 하는 문제이다. stack이라는 이름의 리스트에 현재 위치 인덱스를 계속 저장해 준다. 현재 온도가 stack의 가장 마지막에 존재하는 인덱스의 온도 보다 높으면 stack에서 인덱스를 꺼내고 현재 인덱스와 꺼낸 인덱스의 차를 정답 리스트에 저장한다. 

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:
                day = stack.pop()
                answer[day] = i - day
            stack.append(i)
            
        return answer

 

이때, enumerate 대신 range를 사용해도 된다.

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

enumerate(), range() 차이

 

[python] enumerate(), range() 차이점

range range() 함수는 range(시작 숫자, 종료 숫자, step)의 형태로 사용한다. range의 결과는 시작숫자 이상 ~ 종료 숫자 미만의 컬렉션을 생성한다. 사용할 때, 시작 숫자와 step은 생략 가능하다. >>> range(

yuvelyne.tistory.com