|
| 1 | +''' |
| 2 | +- ์ด ๋ฌธ์ ๋ ์ต์ ๊ฐ์ ํ ์ฃผ์์ ์ฌ์, ๊ทธ ์ดํ์ ์ต๋๊ฐ์ ํ์์ผ ํ๋ ๋ฌธ์ ์ |
| 3 | +- ๋ง์ฝ ์ด์ต์ ๋ผ ์ ์์ผ๋ฉด 0์ ๋ฐํํจ |
| 4 | +์กฐ๊ฑด : |
| 5 | +1) ๋ฐ๋์ ํ ๋ฒ๋ง ์ฌ๊ณ ํ ๋ฒ๋ง ํ์์ผ ํ๋ฉฐ, ํ๊ธฐ ์ ์ ๋ฐ๋์ ์ฌ์ผ ํจ |
| 6 | +2) ํ ๋๋ ๊ตฌ๋งคํ ๋ ์ดํ์ ๋ ์ง์ฌ์ผ ํฉ๋๋ค. |
| 7 | +
|
| 8 | +Example 1. ์ ๊ฒฝ์ฐ |
| 9 | +๋ ์ง (index)| ๊ฐ๊ฒฉ (price) | min_price (์ต์ ๊ฐ) | current_profit (ํ์ฌ ์ด์ต) | max_profit (์ต๋ ์ด์ต) |
| 10 | +0 7 7(์ด๊ธฐ๊ฐ) - 0(์ด๊ธฐ๊ฐ) |
| 11 | +1 1 7 -> 1 - 0 |
| 12 | +2 5 1 5 - 1 = 4 0 -> 4 |
| 13 | +3 3 1 3 - 1 = 2 4 |
| 14 | +4 6 1 6 - 1 = 5 4 -> 5 |
| 15 | +5 4 1 4 - 1 = 3 5 |
| 16 | +
|
| 17 | +''' |
| 18 | +class Solution: |
| 19 | + def maxProfit(self, prices: List[int]): |
| 20 | + # ์
๋ ฅ ๋ฐฐ์ด์ด ๋น์ด ์์ผ๋ฉด ์ฃผ๊ฐ๊ฐ ์์ผ๋ฏ๋ก ๊ฑฐ๋ํ ์ ์์. ๋ฐ๋ผ์ ์ต๋ ์ด์ต์ 0 |
| 21 | + if not prices: |
| 22 | + return 0 |
| 23 | + |
| 24 | + # ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๊ฐ๊ฒฉ์ ์ต์ ๊ฐ๋ก ์ด๊ธฐํํจ. ์ดํ ๊ฐ๊ฒฉ๊ณผ ๋น๊ตํ ๊ธฐ์ค์ ์ด ๋จ |
| 25 | + min_price = prices[0] |
| 26 | + # ์ด์ต์ด ์์ผ๋ฉด 0์ ๋ฐํํ๊ธฐ ์ํด ์ต๋ ์ด์ต์ 0์ผ๋ก ์ด๊ธฐํํจ |
| 27 | + max_profit = 0 |
| 28 | + |
| 29 | + for price in prices[1:]: # ๋ ๋ฒ์งธ ๊ฐ๊ฒฉ๋ถํฐ ์ํ. ์ฒซ๋ฒ์งธ ๊ฐ๊ฒฉ์ ์ด๋ฏธ min_price์ ํ ๋นํ์ผ๋ฏ๋ก ์ ์ธํจ. |
| 30 | + if price < min_price: # ํ์ฌ ๊ฐ๊ฒฉ์ด ์ต์ ๊ฐ๋ณด๋ค ์์ผ๋ฉด ๊ฐฑ์ . ๋ ์ธ๊ฒ ์ด ์ ์๋ ๋ ์ ์ฐพ๋ ๊ณผ์ ์ |
| 31 | + min_price = price |
| 32 | + else: |
| 33 | + profit = price - min_price # ํ์ฌ ๊ฐ๊ฒฉ์์ ์ต์ ๊ฐ๋ฅผ ๋นผ์, ์ง๊ธ ํ๋ฉด ์ป์ ์ ์๋ ์ด์ต ๊ณ์ฐ |
| 34 | + if profit > max_profit: # ๊ณ์ฐํ ์ด์ต์ด ๊ธฐ์กด์ ์ต๋ ์ด์ต๋ณด๋ค ํฌ๋ฉด max_profit ๊ฐฑ์ |
| 35 | + max_profit = profit |
| 36 | + |
| 37 | + return max_profit # ๋ฐ๋ณต์ด ๋๋๋ฉด ์ต๋ ์ด์ต์ ๋ฐํ |
| 38 | + |
| 39 | + |
| 40 | + ''' |
| 41 | + ์๊ฐ ๋ณต์ก๋ : O(n) |
| 42 | + ๋ฐฐ์ด์ ํ ๋ฒ๋ง ์ํํ๊ธฐ ๋๋ฌธ์ ์
๋ ฅ ํฌ๊ธฐ n์ ๋น๋กํจ |
| 43 | + n์ prices ๋ฐฐ์ด์ ๊ธธ์ด |
| 44 | + |
| 45 | + ๊ณต๊ฐ ๋ณต์ก๋ : O(1) |
| 46 | + ์ถ๊ฐ๋ก ์ฌ์ฉํ๋ ๋ณ์๋ min_price, max_profit, profit 3๊ฐ๋ฟ์(์์ ๊ฐ์), |
| 47 | + ์
๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง์ง ์์ |
| 48 | + ์
๋ ฅ ๋ฐฐ์ด ์ธ์ ๋ณ๋์ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ์ง ์์ |
| 49 | + ''' |
| 50 | + |
0 commit comments