File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * λ¬Έμ μ€λͺ
3+ * - μ£Όμ΄μ§ λ°°μ΄μ μμκ³Ό λμ΄ μ°κ²°λμ΄ μλ μνμ΄λΌκ³ ν κ²½μ°μ, μ΄μνλ μ§μ νΈ μ μκ³ μ΅λλ‘ νΈ μ μλ λμ ꡬνλ λ¬Έμ
4+ *
5+ * μμ΄λμ΄
6+ * 1) λμ κ³νλ²(Dynamic Programming) νμ©
7+ * - μν ꡬ쑰μ΄λ―λ‘ μ²«λ²μ§Έ μ§κ³Ό λ§μ§λ§μ§μ λμμ νΈ μ μμ
8+ * - λ°λΌμ λ κ°μ§ κ²½μ°λ‘ λλμ΄ κ³μ°νκ³ , λ κ²°κ³Ό μ€ λ ν° κ°μ λ°ν
9+ * 2) μ ν λ°°μ΄μ λν μ΅λ κΈμ‘ κ³μ°
10+ * - λ§€ μνλ§λ€ νμ¬ μ§μ νΈ κ²½μ°(prev2 + num)μ νΈμ§ μμ κ²½μ°(prev1) μ€ ν° κ°μ μ ν
11+ * - μ΅μ’
μ μΌλ‘ prev1μ μ΅λκ°μ΄ μ μ₯
12+ */
13+ function robLinear ( nums : number [ ] ) {
14+ let prev1 = 0 ;
15+ let prev2 = 0 ;
16+
17+ for ( const num of nums ) {
18+ const temp = prev1 ;
19+ prev1 = Math . max ( prev2 + num , prev1 ) ;
20+ prev2 = temp ;
21+ }
22+
23+ return prev1 ;
24+ }
25+
26+ function rob ( nums : number [ ] ) : number {
27+ if ( nums . length === 1 ) return nums [ 0 ] ;
28+ if ( nums . length === 2 ) return Math . max ( nums [ 0 ] , nums [ 1 ] ) ;
29+
30+ const temp1 = robLinear ( nums . slice ( 0 , nums . length - 1 ) ) ;
31+ const temp2 = robLinear ( nums . slice ( 1 ) ) ;
32+
33+ return Math . max ( temp1 , temp2 ) ;
34+ }
You canβt perform that action at this time.
0 commit comments