[Python - ํ๋ก๊ทธ๋๋จธ์ค Level2] ์ฃผ์ ๊ฐ๊ฒฉ
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ฃผ์๊ฐ๊ฒฉ
์ด ๋จ์๋ก ๊ธฐ๋ก๋ ์ฃผ์๊ฐ๊ฒฉ์ด ๋ด๊ธด ๋ฐฐ์ด 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]))