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