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