Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 인프콘 2024
- jwt
- 항해99
- TiL
- JavaScript
- 전략패턴 #StrategyPattern #디자인패턴
- 디자인패턴
- Spring multimodule
- DesignPattern
- 취업리부트코스
- KPT회고
- 디자인 패턴
- 빈 충돌
- 개발자부트캠프추천
- 구글 OAuth login
- jwttoken
- spring batch 5.0
- @FeignClient
- 프로그래머스
- 99클럽
- 빈 조회 2개 이상
- infcon 2024
- 파이썬
- Python
- 프로그래머스 이중우선순위큐
- 1주일회고
- 개발자 취업
- 단기개발자코스
- 코딩테스트 준비
- 커스텀 헤더
Archives
- Today
- Total
m1ndy5's coding blog
LeetCode 739. Daily Temperatures with Python 본문
https://leetcode.com/problems/daily-temperatures/
바로 풀이법을 떠올리진 못했던 문제였다.
(떠올렸던 방법은 계속해서 비교하는 거였는데 10^5개까지 리스트 길이가 가능해서 최악에 경우에는 시간초과 당연했다)
그냥 스택이나 큐를 풀차례여서 아 둘 중에 하나를 쓰고 풀어야겠다 라고 생각이 들어서 풀었던 문제..?
이런 비슷한 유형들을 많이 풀어서 해결법을 좀 익혀놔야겠다!
아이디어
생각했던 방법은
스택에는 인덱스를 저장해놓고 스택의 마지막 값과 들어오는 값을 비교해서 들어오는 값이 더 크면 그 둘의 인덱스 차이를 저장하는 방법이었다.
class Solution:
def dailyTemperatures(self, temperatures):
l = len(temperatures)
answer = [0 for _ in range(l)]
stack = []
for i, v in enumerate(temperatures):
# 스택이 비어있으면 그냥 집어넣기
if not stack:
stack.append(i)
continue
# 스택이 안비었고 현재값이 직전온도보다 높다면
while stack and v > temperatures[stack[-1]]:
# 빼고 인덱스 차이만큼을 리스트에 넣기
last = stack.pop()
diff = i - last
answer[last] = diff
# 스택에 현재 인덱스 추가
stack.append(i)
return answer
확실히 처음부터 끝까지 계속 비교하는 것이 아니라 최적으로 비교하기 때문에 좋은 코드이다!
굳!
'알고리즘 with python > 알고리즘 스터디' 카테고리의 다른 글
LeetCode 3. Longest Substring Without Repeating Characters with Python (1) | 2024.01.04 |
---|---|
LeetCode 771. Jewels and Stones with Python (1) | 2024.01.04 |
LeetCode 232. Implement Queue using Stacks with Python (0) | 2024.01.04 |
LeetCode 225. Implement Stack using Queues (0) | 2024.01.04 |
LeetCode 561. Array Partition with Python (1) | 2024.01.03 |