[Python - ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level2] ์ฃผ์‹ ๊ฐ€๊ฒฉ

2021. 1. 19. 03:12ใ†๐Ÿ“š Algorithm/๐Ÿ’ช๐Ÿป Python ๋ฌธ์ œ ํ’€์ด

๋ฐ˜์‘ํ˜•
 

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

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

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

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

์ œํ•œ ์‚ฌํ•ญ

  • prices์˜ ๊ฐ ๊ฐ€๊ฒฉ์€ 1 ์ด์ƒ 10,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • prices์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • 1์ดˆ ์‹œ์ ์˜ โ‚ฉ1์€ ๋๊นŒ์ง€ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • 2์ดˆ ์‹œ์ ์˜ โ‚ฉ2์€ ๋๊นŒ์ง€ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • 3์ดˆ ์‹œ์ ์˜ โ‚ฉ3์€ 1์ดˆ๋’ค์— ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1์ดˆ๊ฐ„ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.
  • 4์ดˆ ์‹œ์ ์˜ โ‚ฉ2์€ 1์ดˆ๊ฐ„ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • 5์ดˆ ์‹œ์ ์˜ โ‚ฉ3์€ 0์ดˆ๊ฐ„ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ’€์ด ๊ณผ์ •

prices์˜ ์™ผ์ชฝ๋ถ€ํ„ฐ ๊บผ๋‚ด์–ด ๊ฒ€์‚ฌํ•ด์•ผํ•˜๋ฏ€๋กœ deque ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. prices์—์„œ ํ•˜๋‚˜์”ฉ popleft ํ•˜์—ฌ, for๋ฌธ์œผ๋กœ prices๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฉฐ ๊บผ๋‚ธ price๋ณด๋‹ค ์ž‘์€๊ฒƒ์ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•œ ๋’ค for๋ฌธ์„ ๋Œ๋ฆฐ ๋งŒํผ answer์— ๋”ํ•ด์ฃผ๋ฉด ๋˜๋Š” ๋ฌธ์ œ๋ผ ๋น„๊ต์  ์‰ฝ๊ณ  ๊ฐ„๋‹จํ–ˆ๋‹ค. ์ด๋•Œ while๋ฌธ๊ณผ for๋ฌธ์ด ์ค‘์ฒฉ๋˜์–ด ์žˆ์–ด ํšจ์œจ์„ฑํ…Œ์ŠคํŠธ์—์„œ ํ†ต๊ณผ ๋ชปํ•˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์‰ฝ๊ฒŒ ํ†ต๊ณผํ•˜์—ฌ ์˜ค์ž‰? ํ–ˆ๋˜ ๋ฌธ์ œ์˜€๋‹ค.

 

from collections import deque


def solution(prices):
    answer = []
    prices = deque(prices)
    while prices:
        timer = 0
        price = prices.popleft()
        for price_ck in prices:
            timer += 1
            if price_ck < price:
                break
        answer.append(timer)

    return answer


if __name__ == "__main__":
    print(solution([1, 2, 3, 2, 3]))

 

 

 

๋ฐ˜์‘ํ˜•