1
+ /*
2
+ Time complexity: O(n)
3
+ Space complexity: O(1)
4
+
5
+ λ¬Έμ μ€λͺ
:
6
+ - μ£Όμ΄μ§ λ°°μ΄ `prices`μμ, i <= jμΈ λ μΈλ±μ€ i, jμ λν΄ prices[j] - prices[i]λ₯Ό μ΅λνν΄μΌ ν©λλ€.
7
+ - μ¦, ν λ²μ λ§€μμ ν λ²μ λ§€λλ₯Ό ν΅ν΄ μ»μ μ μλ μ΅λ μ΄μ΅μ κ³μ°ν©λλ€.
8
+ - λ§€μλ λ§€λλ³΄λ€ λ°λμ λ¨Όμ μ΄λ£¨μ΄μ ΈμΌ ν©λλ€.
9
+
10
+ μκ³ λ¦¬μ¦ μ€λͺ
:
11
+ 1. λ°°μ΄μ μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ ν λ² μνν©λλ€.
12
+ 2. νμ¬ μ£Όμ κ°κ²©μ΄ `min_price`λ³΄λ€ μμΌλ©΄, `min_price`λ₯Ό κ°±μ ν©λλ€.
13
+ - `min_price`λ νμ¬κΉμ§μ μ΅μ λ§€μ κ°κ²©μ μλ―Έν©λλ€.
14
+ 3. νμ¬ μ£Όμ κ°κ²©μμ `min_price`λ₯Ό λΊ κ°(νμ¬ μ΄μ΅)μ΄ `max_profit`λ³΄λ€ ν¬λ©΄, `max_profit`μ κ°±μ ν©λλ€.
15
+ - `max_profit`μ νμ¬κΉμ§μ μ΅λ μ΄μ΅μ μλ―Έν©λλ€.
16
+ 4. λ°°μ΄ μνκ° λλ ν, `max_profit`μ λ°νν©λλ€.
17
+
18
+ μκ° λ³΅μ‘λ:
19
+ - λ°°μ΄μ ν λ²λ§ μννλ―λ‘ O(n)μ
λλ€.
20
+
21
+ κ³΅κ° λ³΅μ‘λ:
22
+ - μΆκ°μ μΈ λ°°μ΄μ΄λ λ°μ΄ν° ꡬ쑰λ₯Ό μ¬μ©νμ§ μκ³ , λ κ°μ λ³μ(`min_price`, `max_profit`)λ§ μ¬μ©νλ―λ‘ O(1)μ
λλ€.
23
+ */
24
+
25
+ function maxProfit ( prices ) {
26
+ let min_price = Infinity ; // μ΄κΈ° μ΅μκ°μ 무νλλ‘ μ€μ (μ΄λ€ κ°κ³Ό λΉκ΅ν΄λ κ°±μ λλλ‘ μ€μ )
27
+ let max_profit = 0 ; // μ΄κΈ° μ΅λ μ΄μ΅μ 0 (μ΄μ΅μ΄ μμ κ²½μ°μλ 0μ λ°νν΄μΌ ν¨)
28
+
29
+ // λ°°μ΄μ μννλ©° μ΅μ λ§€μ κ°κ²©κ³Ό μ΅λ μ΄μ΅μ κ³μ°
30
+ for ( let price of prices ) {
31
+ if ( price < min_price ) {
32
+ // νμ¬ μ£Όμ κ°κ²©μ΄ μ΅μ λ§€μ κ°κ²©λ³΄λ€ μμΌλ©΄ μ΅μ λ§€μ κ°κ²© κ°±μ
33
+ min_price = price ;
34
+ } else if ( price - min_price > max_profit ) {
35
+ // νμ¬ μ£Όμ κ°κ²©μμ μ΅μ λ§€μ κ°κ²©μ λΊ κ°(νμ¬ μ΄μ΅)μ΄ μ΅λ μ΄μ΅λ³΄λ€ ν¬λ©΄ μ΅λ μ΄μ΅ κ°±μ
36
+ max_profit = price - min_price ;
37
+ }
38
+ }
39
+
40
+ return max_profit ; // μ΅λ μ΄μ΅ λ°ν
41
+ }
0 commit comments