File tree Expand file tree Collapse file tree 3 files changed +106
-0
lines changed Expand file tree Collapse file tree 3 files changed +106
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number } n
3+ * @return {number[] }
4+ */
5+ var countBits = function ( n ) {
6+
7+ let result = [ ] ;
8+
9+ for ( let i = 0 ; i <= n ; i ++ ) {
10+
11+ let binary = i . toString ( 2 ) ;
12+ let sum = 0 ;
13+
14+ for ( let char of binary ) {
15+ sum += Number ( char ) ;
16+ }
17+ result . push ( sum ) ;
18+ }
19+
20+ return result ;
21+
22+ } ;
23+
24+
25+ console . log ( countBits ( 2 ) ) ;
26+ console . log ( countBits ( 5 ) ) ;
27+
28+ /*
29+ 시간 복잡도: O(n * log n)
30+ 공간 복잡도: O(n)
31+ */
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {string } s
3+ * @return {number }
4+ */
5+
6+ var numDecodings = function ( s ) {
7+ if ( s == null || s . length === 0 ) {
8+ return 0 ;
9+ }
10+
11+ const n = s . length ;
12+ const dp = new Array ( n + 1 ) . fill ( 0 ) ;
13+ dp [ 0 ] = 1 ;
14+ dp [ 1 ] = s [ 0 ] === '0' ? 0 : 1 ;
15+
16+ for ( let i = 2 ; i <= n ; i ++ ) {
17+ const oneDigit = parseInt ( s . substring ( i - 1 , i ) ) ;
18+ const twoDigits = parseInt ( s . substring ( i - 2 , i ) ) ;
19+
20+ // Check if single digit decoding is possible
21+ if ( oneDigit >= 1 && oneDigit <= 9 ) {
22+ dp [ i ] += dp [ i - 1 ] ;
23+ }
24+
25+ // Check if two digit decoding is possible
26+ if ( twoDigits >= 10 && twoDigits <= 26 ) {
27+ dp [ i ] += dp [ i - 2 ] ;
28+ }
29+ }
30+
31+ return dp [ n ] ;
32+ } ;
33+
34+
35+ console . log ( numDecodings ( "12" ) ) ;
36+ console . log ( numDecodings ( "226" ) ) ;
37+ console . log ( numDecodings ( "06" ) ) ;
38+
39+ /*
40+ 시간 복잡도: O(n)
41+ 공간 복잡도: O(n)
42+ */
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {string } s
3+ * @param {string } t
4+ * @return {boolean }
5+ */
6+ var isAnagram = function ( s , t ) {
7+ if ( s . length !== t . length ) return false ;
8+
9+ let countS = { } ;
10+ let countT = { } ;
11+
12+ for ( let i = 0 ; i < s . length ; i ++ ) {
13+ countS [ s [ i ] ] = ( countS [ s [ i ] ] || 0 ) + 1 ;
14+ countT [ t [ i ] ] = ( countT [ t [ i ] ] || 0 ) + 1 ;
15+ }
16+
17+ for ( let key in countS ) {
18+ if ( countS [ key ] !== countT [ key ] ) {
19+ return false ;
20+ }
21+ }
22+
23+ return true ;
24+
25+ } ;
26+
27+ console . log ( isAnagram ( "anagram" , "nagaram" ) ) ;
28+ console . log ( isAnagram ( "rat" , "car" ) ) ;
29+
30+ /*
31+ 시간 복잡도: O(n)
32+ 공간 복잡도: O(n)
33+ */
You can’t perform that action at this time.
0 commit comments