๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿค– ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

#ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํŒŒ์ด์ฌ Lv.2 #์ฃผ์‹๊ฐ€๊ฒฉ

๋ฌธ์ œ์„ค๋ช…
: ์ดˆ ๋‹จ์œ„๋กœ ๊ธฐ๋ก๋œ ์ฃผ์‹๊ฐ€๊ฒฉ์ด ๋‹ด๊ธด ๋ฐฐ์—ด prices๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์€ ๊ธฐ๊ฐ„์€ ๋ช‡ ์ดˆ์ธ์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑ

 

๋ฌธ์ œํ’€์ด

  1. ์ด ๋ฌธ์ œ๋Š” prices ๋ฆฌ์ŠคํŠธ ๊ฐ๊ฐ์˜ ๊ฐ’๋“ค์ด ๋ช‡์ดˆ ๋™์•ˆ ๊ฐ€๊ฒฉ์ด ์•ˆ๋–จ์–ด์ง€๊ณ  ์žˆ์—ˆ๋Š”์ง€ return ํ•ด์ฃผ๋ฉด ๋˜๋Š” ๋ฌธ์ œ
  2. ๋ฆฌ์ŠคํŠธ prices์˜ ๊ฐ ์›์†Œ๋“ค์„ ๊ธฐ์ค€์œผ๋กœ ์žก๊ณ  ๋’ค์˜ ๊ฐ’๋“ค๊ณผ ๋น„๊ต
  3. return ์€ prices์˜ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐœ์ˆ˜๋งŒํผ ์ด๋ฏ€๋กœ for๋ฌธ์œผ๋กœ ํ’€ ๊ฒฝ์šฐ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
  4. ํŒŒ์ด์ฌ์€ answer = [0] * ๊ฐœ์ˆ˜ ํ•˜๋ฉด ๊ฐœ์ˆ˜๋งŒํผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋งŒ๋“ค์–ด ์ง„๋‹ค.
  5. ๋งŒ์•ฝ ์•ž์— ์žˆ๋Š” ๊ฐ’์ด ๋’ค์— ์žˆ๋Š” ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด for๋ฌธ์„ ๋‚˜์™€ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌ์ŠคํŠธ answer์— ๋„ฃ๋Š”๋‹ค
  6. ๋งˆ์ง€๋ง‰ ๋ฆฌ์ŠคํŠธ answer์„ ๋ฆฌํ„ด

 

#solution

def solution(prices):
    answer = [0] *len(prices)
    for i in range(len(prices)):
        c = 0
        for j in range(i+1,len(prices)):
            c += 1
            if prices[i]>prices[j]:
                break
        answer[i]=c
    return answer

 

 

 

#๋‹ค๋ฅธ์‚ฌ๋žŒํ’€์ด

( https://velog.io/@soo5717/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A3%BC%EC%8B%9D%EA%B0%80%EA%B2%A9-Python ) ํ, ์Šคํƒ์„ ํ™œ์šฉํ•œ ํ’€์ด๋ฐฉ๋ฒ• ์ฐธ๊ณ ํ•˜๊ธฐ!

 

# ํ queue๋ฅผ ์‚ฌ์šฉ

from collections import deque

def solution(prices):
    queue = deque(prices)
    answer = []
    
    while queue:
        price = queue.popleft()
        sec = 0
        for q in queue:
            sec += 1
            if price > q:
                break 
        answer.append(sec)        
    return answer

# ์Šคํƒ stack์„ ์‚ฌ์šฉ

# prices = [1, 2, 3, 2, 3, 1] return [5, 4, 1, 2, 1, 0]
def solution(prices):
    length = len(prices)
    
    # answer์„ max๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”  
    answer = [ i for i in range (length - 1, -1, -1)]
    
    # ์ฃผ์‹ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์งˆ ๊ฒฝ์šฐ ์ฐพ๊ธฐ
    stack = [0]
    for i in range (1, length):
        while stack and prices[stack[-1]] > prices[i]:
            j = stack.pop()
            answer[j] = i - j
        stack.append(i)
    return answer

 

 

 

 

https://programmers.co.kr/learn/courses/30/lessons/42584?language=python3 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ฃผ์‹๊ฐ€๊ฒฉ

์ดˆ ๋‹จ์œ„๋กœ ๊ธฐ๋ก๋œ ์ฃผ์‹๊ฐ€๊ฒฉ์ด ๋‹ด๊ธด ๋ฐฐ์—ด prices๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์€ ๊ธฐ๊ฐ„์€ ๋ช‡ ์ดˆ์ธ์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”. ์ œํ•œ์‚ฌํ•ญ prices์˜ ๊ฐ ๊ฐ€๊ฒฉ์€ 1 ์ด์ƒ 10,00

programmers.co.kr