File tree Expand file tree Collapse file tree 3 files changed +79
-0
lines changed
Expand file tree Collapse file tree 3 files changed +79
-0
lines changed Original file line number Diff line number Diff line change 1+ // ์๊ฐ ๋ณต์ก๋: O(2^(target / minCandidate))
2+ // ๊ณต๊ฐ ๋ณต์ก๋: O(target / minCandidate)
3+ function combinationSum ( candidates : number [ ] , target : number ) : number [ ] [ ] {
4+ const result : number [ ] [ ] = [ ] ;
5+
6+ const dfs = ( index : number , remain : number , path : number [ ] ) => {
7+ if ( remain === 0 ) {
8+ result . push ( [ ...path ] ) ;
9+ return ;
10+ }
11+
12+ if ( remain < 0 || index === candidates . length ) {
13+ return ;
14+ }
15+
16+ const num = candidates [ index ] ;
17+
18+ path . push ( num ) ;
19+ dfs ( index , remain - num , path ) ;
20+ path . pop ( ) ;
21+
22+ dfs ( index + 1 , remain , path ) ;
23+ } ;
24+
25+ dfs ( 0 , target , [ ] ) ;
26+
27+ return result ;
28+ }
Original file line number Diff line number Diff line change 1+ //ํ์ด 1
2+ // ์๊ฐ ๋ณต์ก๋: O(k)
3+ // ๊ณต๊ฐ ๋ณต์ก๋: O(1)
4+ // ์๋: 2ms
5+ function hammingWeight ( n : number ) : number {
6+ let count = 0 ;
7+ while ( n ) {
8+ n = n & ( n - 1 ) ;
9+ count ++ ;
10+ }
11+ return count ;
12+ }
13+ /*
14+ ์๋๋ ๋น ๋ฅด์ง๋ง ๋ณต์ก๋๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ ํฉํ์ง ์์.
15+ Brian Kernighan ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ ๋นํธ ๊ณ์ฐ์ผ๋ก ์ฌํ์ด
16+
17+ // ์๊ฐ ๋ณต์ก๋: O(log n)
18+ // ๊ณต๊ฐ ๋ณต์ก๋: O(log n)
19+ // ์๋: 0ms
20+ function hammingWeight(n: number): number {
21+ const bitNumber = n.toString(2);
22+ const bitString = String(bitNumber);
23+
24+ const bitArray = bitString.split('').map((s) => Number(s));
25+ return bitArray.reduce((a, b) => a + b);
26+ }
27+ */
Original file line number Diff line number Diff line change 1+ // ์๊ฐ ๋ณต์ก๋: O(n)
2+ // ๊ณต๊ฐ ๋ณต์ก๋: O(n)
3+ function isPalindrome ( s : string ) : boolean {
4+ //1. s์์ ๋ฌธ์์ ์ซ์๊ฐ ์๋ ๋ค๋ฅธ ๊ฒ๋ค์ ์ ๊ฑฐ
5+ //2. ๋๋ฌธ์ -> ์๋ฌธ์, ๋์ด์ฐ๊ธฐ, ๊ณต๋ฐฑ ์ ๊ฑฐ
6+ let originalString = s ;
7+ let alphabeticString = originalString . replace ( / [ ^ a - z A - Z 0 - 9 ] / g, '' ) ;
8+ const filteredString = alphabeticString . toLowerCase ( ) . trim ( ) ;
9+
10+ //3. ์ ๊ฑฐ ํ length === 0 ์ผ ๊ฒฝ์ฐ true๋ก ๊ฒฐ๊ณผ ๊ฐ ๋ฐํ.
11+ if ( filteredString . length === 0 ) {
12+ return true ;
13+ }
14+
15+ let count = 0 ;
16+ let roundedStringLength = Math . round ( filteredString . length / 2 ) ;
17+ for ( let i = 0 ; i < roundedStringLength ; i ++ ) {
18+ // ์ ๋์ ๊ธ์๊ฐ ๋์ผํ์ง ์ฒดํฌํ๊ณ
19+ if ( filteredString [ i ] === filteredString [ filteredString . length - i - 1 ] ) {
20+ count += 1 ;
21+ }
22+ }
23+ return count === roundedStringLength ? true : false ;
24+ }
You canโt perform that action at this time.
0 commit comments