File tree Expand file tree Collapse file tree 2 files changed +87
-0
lines changed Expand file tree Collapse file tree 2 files changed +87
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Time Complexity: O(N)
3
+ * Space Complexity: O(N)
4
+ *
5
+ * 접근: 1번째 계단을 오르는 방법은 1가지, 2번째 계단을 오르는 방법은 2가지 (계단은 한 번에 1칸 또는 2칸씩만 오를 수 있다.)
6
+ * n 번째 계단에 오르는 방법은 '한 칸 전 계단(n-1)에서 오르는 1칸 올라오는 방법' + '두 칸 전 계단(n-2)에서 2칸 올라오는 방법'
7
+ */
8
+
9
+ function climbStairs ( n : number ) : number {
10
+ let stairs = [ 1 , 2 ] ;
11
+
12
+ for ( let i = 2 ; i < n ; i ++ ) {
13
+ stairs [ i ] = stairs [ i - 1 ] + stairs [ i - 2 ] ;
14
+ }
15
+
16
+ return stairs [ n - 1 ] ;
17
+ }
18
+
19
+ function climbStairs ( n : number ) : number {
20
+ let dp = new Array ( n + 1 ) . fill ( 0 ) ;
21
+ dp [ 1 ] = 1 ;
22
+ dp [ 2 ] = 2 ;
23
+
24
+ for ( let i = 3 ; i < n + 1 ; i ++ ) {
25
+ dp [ i ] = dp [ i - 1 ] + dp [ i - 2 ] ;
26
+ }
27
+
28
+ return dp [ n ] ;
29
+ }
30
+
31
+ console . log ( climbStairs ( 5 ) ) ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Runtime: 24ms, Memory: 55.95MB
3
+ *
4
+ * 접근: 문자들끼리 anagram 관계인 경우, 정렬했을 때 같은 값을 가지기에 각 문자열 정렬 후 비교.
5
+ */
6
+
7
+ function isAnagram ( s : string , t : string ) : boolean {
8
+ if ( s . length !== t . length ) {
9
+ return false ;
10
+ }
11
+ return sortedString ( s ) === sortedString ( t ) ;
12
+ }
13
+
14
+ function sortedString ( s : string ) : string {
15
+ return s . split ( "" ) . sort ( ) . join ( "" ) ;
16
+ }
17
+
18
+ /**
19
+ * Runtime: 19ms, Memory: 55.02MB
20
+ *
21
+ * 접근: 문자들끼리 anagram 관계인 경우, 각 문자들의 count가 동일할 것이기에 Map 자료구조를 이용해서 합/차 계산
22
+ * Time Complexity: O(N)
23
+ * Space Complexity: O(N)
24
+ */
25
+ function isAnagram ( s : string , t : string ) : boolean {
26
+ if ( s . length !== t . length ) {
27
+ return false ;
28
+ }
29
+
30
+ let map = new Map < string , number > ( ) ;
31
+ for ( const char of s ) {
32
+ if ( map . has ( char ) ) {
33
+ map . set ( char , map . get ( char ) ! + 1 ) ;
34
+ } else {
35
+ map . set ( char , 1 ) ;
36
+ }
37
+ }
38
+
39
+ for ( const char of t ) {
40
+ if ( map . has ( char ) ) {
41
+ map . set ( char , map . get ( char ) ! - 1 ) ;
42
+ } else {
43
+ return false ;
44
+ }
45
+ }
46
+
47
+ for ( const value of map . values ( ) ) {
48
+ if ( value !== 0 ) {
49
+ return false ;
50
+ }
51
+ }
52
+
53
+ return true ;
54
+ }
55
+
56
+ console . log ( isAnagram ( "anagram" , "nagaram" ) ) ;
You can’t perform that action at this time.
0 commit comments