๋ฆฌํธ์ฝ๋ 739๋ฒ ์ผ์ผ์จ๋ ๋ดํ์ด์ ์๊ธธ์ ์๋ ํ์ด ๋น๊ต
from collections import deque
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
temperatures = deque(temperatures)
answer = []
for i in range(len(temperatures)):
a = temperatures.popleft()
while True:
j = 0
if temperatures[j] <= a:
j += 1
elif temperatures[j] > a:
j += 1
answer.append(j)
break
if j >= len(temperatures):
answer.append(0)
break
๊ฐ์ฅ ์ฒ์ ๊ณ ๋ฏผํ ๊ฑด for๋ฌธ์ ํ๋ฒ๋ง ์ฐ๊ณ ๊ตฌํํ๋ ๋ฒ์ ๋ํด์ ๊ณ ๋ฏผํ๋ค.
์ฒ์์๋ while๋ฌธ๋ง ์ฌ์ฉํด์ ํ๋ ค๊ณ ํ์ผ๋ ํ๋์ฉ ๋ค ๋น๊ต๋ฅผ ํด์ผ ํ๋ฏ๋ก for๋ฌธ์ while๋ฌธ์ ๋ฃ๋ ๊ฑธ๋ก ํํ์ ๋ดค๋ค.
์ฒซ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์์ ์์ ์์๋ฅผ ๋นผ๊ณ ๋ค์ while ๋ฐ๋ณต๋ฌธ์ ์ํํ๋ฉด์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ ๋ณ์ j๋ฅผ ์ ์ธํด์ ๊ฐ ์กฐ๊ฑด๋ง๋ค j๊ฐ์ 1์ฉ ์ฌ๋ฆฌ๋ค๊ฐ ์กฐ๊ฑด์ ํด๋นํ๋ฉด ๋น ๋ฐฐ์ด์ j๋ฅผ ์ง์ด ๋ฃ๋๋ค.
๊ทธ์น๋ง ์๊ฐ์ด๊ณผ๊ฐ ๋์ ์ฒด์ ์กฐ์ฐจ ๋์ง ์์๋ค....
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
์ค๋๋ ์ญ์๋ ์๊ธธ ์ ์๋์ ํ์ด๋ฅผ ๋ณด๋ฉด ํํ๊ฐ ์จ๋ค. ์ด๋ป๊ฒ ์ด๋ ๊ฒ ํ ์ ์์๊น ๋๋ ๋ ๋ฐฉ์ ๊ฐ๋ฌ๋๊ณ 10๋ ๋์ ์ด ๋ฌธ์ ํ๋ผ๊ณ ํด๋ ์ด๋ฐ ํ์ด ๋ฐฉ๋ฒ์ ๋ชป ๋ ์ฌ๋ฆดํ ๋ฐ...ํ๋ ๋ง์์ ๊ทธ๋ง๋๊ณ ์ถ์ ๋ง์์ด ๊ตด๋ ๊ฐ์ง๋ง ์ด๋ ๊ฒ ์ข์ ํ์ด๋ฐฉ๋ฒ์ ์ตํ์ผ๋ ๊ฐ์ด๋์ด๋ค ๋ผ๊ณ ์๊ฐํ๋ค.
for๋ฌธ ํ๋ฒ์ while๋ฌธ์ ๋๋ ๊ฒ ๊น์ง๋ ๋ด์๊ฐ๊ณผ ๋น์ทํ๋ค.
์ ์๋์ enumerateํจ์๋ฅผ ์ฌ์ฉํด์ ์ธ๋ฑ์ค ๊ฐ์ ์ ์ฅํด์ ์คํ๋ฐฐ์ด์ ์ธ๋ฑ์ค ๊ฐ์ ์ ์ฅํ๋ค๊ฐ ํ์ฌ ๊ฐ์ด ์ด์ ๊ฐ ๋ณด๋ค ํฐ ๊ฐ์ด ๋์ค๋ฉด ์คํ์ ์ ์ฅํ ์ธ๋ฑ์ค ๋ฐฐ์ด์ ๋นผ๋ฒ๋ฆฌ๊ณ ๋น๊ต๊ฐ์ ์ธ๋ฑ์ค ์ฐจ์ด๊ฐ์ผ๋ก ์
๋ฐ์ดํธ๋ฅผ ํด๋ฒ๋ฆฐ๋ค.
ํญ์ ๋์ ํ์ด ๋ฐฉ์์ ๋ธ๋ฃจํธ ํฌ์คํธ ์ธ๋ฐ ์ด๋ ๊ฒ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์๊ฐํ๋ ํ๋ จ์ ๋ ํด์ผ๊ฒ ๋ค.