๐ŸŒก Daily Temperatures

ํŒ”๋ฆฌ๋™ยท2021๋…„ 8์›” 26์ผ
0
post-thumbnail

๋ฆฌํŠธ์ฝ”๋“œ 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ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ธ๋ฑ์Šค ๊ฐ’์„ ์ €์žฅํ•ด์„œ ์Šคํƒ๋ฐฐ์—ด์— ์ธ๋ฑ์Šค ๊ฐ’์„ ์ €์žฅํ•˜๋‹ค๊ฐ€ ํ˜„์žฌ ๊ฐ’์ด ์ด์ „ ๊ฐ’ ๋ณด๋‹ค ํฐ ๊ฐ’์ด ๋‚˜์˜ค๋ฉด ์Šคํƒ์— ์ €์žฅํ•œ ์ธ๋ฑ์Šค ๋ฐฐ์—ด์„ ๋นผ๋ฒ„๋ฆฌ๊ณ  ๋น„๊ต๊ฐ’์˜ ์ธ๋ฑ์Šค ์ฐจ์ด๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด๋ฒ„๋ฆฐ๋‹ค.

  • ํ•ญ์ƒ ๋‚˜์˜ ํ’€์ด ๋ฐฉ์‹์€ ๋ธŒ๋ฃจํŠธ ํฌ์ŠคํŠธ ์ธ๋ฐ ์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ํ›ˆ๋ จ์„ ๋” ํ•ด์•ผ๊ฒ ๋‹ค.

profile
๋ฐฐ์›€์˜ ๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€