File tree Expand file tree Collapse file tree 5 files changed +123
-0
lines changed Expand file tree Collapse file tree 5 files changed +123
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * ๋ฌธ์ ์ ํ
3
+ * - DP: DFS + Backtracking
4
+ *
5
+ * ๋ฌธ์ ์ค๋ช
6
+ * - ์ฃผ์ด์ง ์ซ์ ๋ฐฐ์ด์์ ์กฐํฉ์ ๋ง๋ค์ด์ ํฉ์ด target์ด ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๊ธฐ
7
+ *
8
+ * ์์ด๋์ด
9
+ * 1) Backtracking ํ์ฉ
10
+ * - dfs๋ฅผ ํตํด ํฉ์ด target์ด ๋๋ ๋ชจ๋ ์ผ์ด์ค๋ฅผ ํ์ํ๋ค. (๋จ, ์กฐ๊ฑด ์ฒดํฌ ํ์ ์ฆ์ ์ค๋จ = ๋ฐฑํธ๋ํน)
11
+ */
12
+ function combinationSum ( candidates : number [ ] , target : number ) : number [ ] [ ] {
13
+ const result : number [ ] [ ] = [ ] ;
14
+
15
+ function backtracking (
16
+ startIndex : number ,
17
+ combination : number [ ] ,
18
+ total : number
19
+ ) {
20
+ if ( total === target ) {
21
+ result . push ( [ ...combination ] ) ;
22
+ return ;
23
+ }
24
+
25
+ if ( total > target ) return ;
26
+
27
+ for ( let i = startIndex ; i < candidates . length ; i ++ ) {
28
+ combination . push ( candidates [ i ] ) ;
29
+ backtracking ( i , combination , total + candidates [ i ] ) ;
30
+ combination . pop ( ) ;
31
+ }
32
+ }
33
+
34
+ backtracking ( 0 , [ ] , 0 ) ;
35
+ return result ;
36
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * ๋ฌธ์ ์ ํ
3
+ * - DP (์ ํ์ ์ด์ฉ, ๋ฐฑํธ๋ํน ์ฌ์ฉ์ TLE ๋ฐ์)
4
+ *
5
+ * ๋ฌธ์ ์ค๋ช
6
+ * - ์ฃผ์ด์ง ๋ฌธ์์ด์ ์ซ์๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์
7
+ *
8
+ * ์์ด๋์ด
9
+ * 1) f(i) = ๋ง์ง๋ง ํ์๋ฆฌ์๊ฐ ๋ณํ ๊ฐ๋ฅํ๋ฉด f(i-1) + ๋ง์ง๋ง ๋์๋ฆฌ์๊ฐ ๊ฐ๋ฅํ๋ฉด f(i-2)
10
+ * - ํ์๋ฆฌ์๋ 0๋ง ์๋๋ฉด ๋จ, ๋์๋ฆฌ์๋ 10~26 ์ฌ์ด์ฌ์ผ ํจ.
11
+ *
12
+ */
13
+ function numDecodings ( s : string ) : number {
14
+ const n = s . length ;
15
+ if ( n === 1 ) return s [ 0 ] === "0" ? 0 : 1 ;
16
+
17
+ const dp = Array ( n + 1 ) . fill ( 0 ) ;
18
+ dp [ 0 ] = 1 ;
19
+ dp [ 1 ] = s [ 0 ] === "0" ? 0 : 1 ;
20
+
21
+ for ( let i = 2 ; i <= n ; i ++ ) {
22
+ const one = Number ( s [ i - 1 ] ) ;
23
+ const two = Number ( s [ i - 2 ] + s [ i - 1 ] ) ;
24
+ if ( one !== 0 ) dp [ i ] += dp [ i - 1 ] ;
25
+ if ( two >= 10 && two <= 26 ) dp [ i ] += dp [ i - 2 ] ;
26
+ }
27
+
28
+ return dp [ n ] ;
29
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * ๋ฌธ์ ์ ํ
3
+ * - Array, DP
4
+ *
5
+ * ๋ฌธ์ ์ค๋ช
6
+ * - ๋ฐฐ์ด์์ "์ฐ์๋" ๋ถ๋ถ ๋ฐฐ์ด์ ํฉ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ตฌํ๊ธฐ
7
+ *
8
+ * ์์ด๋์ด
9
+ * 1) Bottom-Up ๋ฐฉ์
10
+ * - dp์๋ ์์์๋ถํฐ ์ด์ด๋ถ์ธ ๊ฐ์ด ํฐ์ง, ํ์ฌ ๊ฐ์์ ๋ค์ ์์ํ๋๊ฒ ํด์ง ๋น๊ตํ์ฌ ํฐ ๊ฐ ์ ์ฅ (ํ์ฌ ๊ธฐ์ค)
11
+ * - maxSum์ ์ ์ฒด dp์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ์ฅ
12
+ */
13
+ function maxSubArray ( nums : number [ ] ) : number {
14
+ const dp = new Array ( nums . length ) ;
15
+ dp [ 0 ] = nums [ 0 ] ;
16
+ let maxSum = nums [ 0 ] ;
17
+
18
+ for ( let i = 1 ; i < nums . length ; i ++ ) {
19
+ dp [ i ] = Math . max ( dp [ i - 1 ] + nums [ i ] , nums [ i ] ) ;
20
+ maxSum = Math . max ( maxSum , dp [ i ] ) ;
21
+ }
22
+ return maxSum ;
23
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * ๋ฌธ์ ์ ํ
3
+ * - Binary (๊ฐ๋
์ ์๊ณ ์๋์ง), ๊ธฐ๋ณธ์ ์ธ ๊ตฌํ ๋ฌธ์
4
+ *
5
+ * ๋ฌธ์ ์ค๋ช
6
+ * - ์ฃผ์ด์ง ์ ์๋ฅผ 2์ง์๋ก ๋ณํํ์๋ 1์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์
7
+ *
8
+ * ์์ด๋์ด
9
+ * 1) ๋๋๊ธฐ 2๋ฅผ ํตํด 2์ง์๋ก ๋ณํํ๊ณ 1์ธ ๊ฒฝ์ฐ ๊ฐฏ์๋ฅผ ์นด์ดํธํ๋ค.
10
+ */
11
+ function hammingWeight ( n : number ) : number {
12
+ let quotient = n ;
13
+ let count = 0 ;
14
+
15
+ while ( quotient ) {
16
+ if ( quotient % 2 === 1 ) count ++ ;
17
+ quotient = Math . floor ( quotient / 2 ) ;
18
+ }
19
+ return count ;
20
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * ๋ฌธ์ ์ ํ
3
+ * - ๋ฌธ์์ด ์ฒ๋ฆฌ, ๋ฌธ์์ด ๋น๊ต
4
+ *
5
+ * ๋ฌธ์ ์ค๋ช
6
+ * - ์ฃผ์ด์ง ๋ฌธ์์ด์ด ํฐ๋ฆฐ๋๋กฌ์ธ์ง ํ์ธํ๋ ๋ฌธ์
7
+ *
8
+ * ์์ด๋์ด
9
+ * 1) ์ฃผ์ด์ง ๋ฌธ์์ด์์ ์ซ์, ์ํ๋ฒณ๋ง ๋จ๊ฒจ๋๊ณ ์๋ฌธ์๋ก ๋ณํ ํ์ ํฐ๋ฆฐ๋๋กฌ์ธ์ง ํ์ธ
10
+ */
11
+ function isPalindrome ( s : string ) : boolean {
12
+ const original = s . replace ( / [ ^ a - z A - Z 0 - 9 ] / g, "" ) . toLowerCase ( ) ;
13
+ const reverse = original . split ( "" ) . reverse ( ) . join ( "" ) ;
14
+ return original === reverse ;
15
+ }
You canโt perform that action at this time.
0 commit comments