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