Skip to content

Commit 16a767d

Browse files
author
mykoo
committed
Merge remote-tracking branch 'upstream/main'
2 parents 1090e32 + fa8a2f3 commit 16a767d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+1930
-25
lines changed

β€Žclimbing-stairs/HC-kang.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// T.C. O(n)
2+
// S.C. O(1)
3+
function climbStairs(n: number): number {
4+
let p = 0;
5+
let q = 1;
6+
for (let i = 0; i < n; i++) {
7+
q = q + p;
8+
p = q - p;
9+
}
10+
return q;
11+
}

β€Žclimbing-stairs/TonyKim9401.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public int climbStairs(int n) {
3+
// Time complexity: O(n);
4+
// Space complexity: O(n);
5+
int[] dp = new int[n+1];
6+
7+
if (n >= 1) dp[1] = 1;
8+
if (n >= 2) dp[2] = 2;
9+
10+
for (int i = 3; i <= n; i++) {
11+
dp[i] = dp[i-1] + dp[i-2];
12+
}
13+
return dp[n];
14+
}
15+
}

β€Žclimbing-stairs/bemelon.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution:
2+
# Space complexity: O(1)
3+
# Tiem complexity: O(n)
4+
def climbStairs(self, n: int) -> int:
5+
# dp[0] is n - 2
6+
# dp[1] is n - 1
7+
dp = [1, 2]
8+
9+
if n <= 2:
10+
return dp[n - 1]
11+
12+
for i in range(3, n + 1):
13+
# dp[n] = dp[n - 1] + dp[n - 2]
14+
# = dp[1] + dp[0]
15+
dp[(i - 1) % 2] = sum(dp)
16+
17+
return dp[(n - 1) % 2]

β€Žclimbing-stairs/gitsunmin.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* https://leetcode.com/problems/climbing-stairs
3+
* time complexity : O(n)
4+
* space complexity : O(1)
5+
*/
6+
7+
export const upStairs = (n: number): number => {
8+
let [l, r] = [1, 2];
9+
for (let i = 3; i <= n; i++) [l, r] = [r, l + r];
10+
11+
return r;
12+
};
13+
14+
export function climbStairs(n: number): number {
15+
if (n <= 2) return n;
16+
return upStairs(n);
17+
};

β€Žclimbing-stairs/heozeop.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Time Complexity: O(n)
2+
// Spatial Complexity: O(n)
3+
4+
class Solution {
5+
public:
6+
int climbStairs(int n) {
7+
vector<int> dp(n + 1, 0);
8+
9+
if (n == 1) {
10+
return 1;
11+
}
12+
13+
dp[0] = dp[1] = 1;
14+
for(int i = 2; i <= n; ++i) {
15+
dp[i] = dp[i - 1] + dp[i - 2];
16+
}
17+
18+
return dp[n];
19+
}
20+
};

β€Žclimbing-stairs/hwanmini.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// μ‹œκ°„λ³΅μž‘λ„ O(n)
2+
// κ³΅κ°„λ³΅μž‘λ„ O(n)
3+
4+
/**
5+
* @param {number} n
6+
* @return {number}
7+
*/
8+
var climbStairs = function(n) {
9+
const stairs = [1, 2]
10+
11+
for (let i = 2; i < n; i++) {
12+
stairs[i] = stairs[i-1] + stairs[i-2]
13+
}
14+
15+
return stairs[n-1]
16+
};
17+
18+
console.log(climbStairs(5))

β€Žclimbing-stairs/hyejjun.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
var climbStairs = function (n) {
6+
if (n <= 2) return n;
7+
8+
let first = 1;
9+
let second = 2;
10+
11+
for (let i = 3; i <= n; i++) {
12+
let third = first + second;
13+
first = second;
14+
second = third;
15+
}
16+
17+
return second;
18+
};
19+
20+
console.log(climbStairs(2));
21+
console.log(climbStairs(3));
22+
console.log(climbStairs(4));
23+
console.log(climbStairs(5));
24+
25+
/*
26+
μ‹œκ°„ λ³΅μž‘λ„: O(n)
27+
곡간 λ³΅μž‘λ„: O(1)
28+
*/

β€Žclimbing-stairs/jdalma.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package leetcode_study
2+
3+
import io.kotest.matchers.shouldBe
4+
import org.junit.jupiter.api.Test
5+
6+
class `climbing-stairs` {
7+
8+
/**
9+
* 1. bottom-up λ°©μ‹μœΌλ‘œ κ°€λŠ₯ν•œ 경우의 수λ₯Ό λˆ„μ ν•œλ‹€.
10+
* TC: O(n), SC: O(n)
11+
*/
12+
fun climbStairs(n: Int): Int {
13+
val dp = IntArray(n + 1).apply {
14+
this[1] = 1
15+
if (n >= 2) this[2] = 2
16+
}
17+
18+
for (num in 3 .. n) {
19+
dp[num] = dp[num - 1] + dp[num - 2]
20+
}
21+
22+
return dp[n]
23+
}
24+
25+
@Test
26+
fun `μž…λ ₯받은 λͺ©ν‘―값에 1κ³Ό 2만 λ”ν•˜μ—¬ 도달할 수 μžˆλŠ” 경우의 수λ₯Ό λ°˜ν™˜ν•œλ‹€`() {
27+
climbStairs(1) shouldBe 1
28+
climbStairs(2) shouldBe 2
29+
climbStairs(3) shouldBe 3
30+
climbStairs(4) shouldBe 5
31+
}
32+
}

β€Žclimbing-stairs/kimyoung.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// found a pattern where the result is the addition of two previous elements,
2+
// but not sure if this is the expected answer
3+
var climbStairs = function (n) {
4+
let arr = new Array(n).fill(1);
5+
for (let i = 2; i <= n; i++) {
6+
arr[i] = arr[i - 2] + arr[i - 1];
7+
}
8+
return n === 1 ? 1 : arr[n];
9+
};
10+
11+
// time - O(n) iterate up to n times
12+
// space - O(n) creates an array upto n elements

β€Žclimbing-stairs/naringst.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
/**
6+
* Note: DP
7+
* κ²°κ΅­ 1개 μ „μ˜ κ°’μ—μ„œ 1칸을 더 κ°€κ±°λ‚˜, 2개 μ „μ˜ κ°’μ—μ„œ 2칸을 더 κ°€λŠ” 경우의 μˆ˜κ°€ 생긴닀.
8+
* 1μΌλ•Œμ—λŠ” 1칸을 κ°€λŠ” λ°©λ²•μ˜ 경우 λΏμ΄μ§€λ§Œ, 2μΌλ•Œμ—λŠ” 0μΉΈ κ°€λŠ” κ²ƒμ—μ„œ 2칸을 κ°€κ±°λ‚˜ 1칸을 κ°€λŠ” κ²ƒμ—μ„œ 1칸을 더 갈 수 μžˆλ‹€.
9+
* 3일 λ•Œμ—λŠ” 1κΉŒμ§€ 갔을 κ²½μš°μ—μ„œ 2칸을 더 κ°€κ±°λ‚˜, 2κΉŒμ§€ 갔을 κ²½μš°μ—μ„œ 1칸을 더 κ°€λ©΄ λ˜λ‹ˆκΉŒ 1κΉŒμ§€ 갔을 경우의 수 + 2κΉŒμ§€ 갔을 경우의 수
10+
*
11+
*
12+
* Runtime: 41ms, Memory: 48.95MB
13+
* Time complexity: O(n)
14+
* Space complexity: O(n)
15+
*
16+
*/
17+
18+
var climbStairs = function (n) {
19+
const dp = Array(n).fill(0);
20+
dp[1] = 1;
21+
dp[2] = 2;
22+
23+
for (let i = 3; i < n + 1; i++) {
24+
dp[i] = dp[i - 2] + dp[i - 1];
25+
}
26+
27+
return dp[n];
28+
};

0 commit comments

Comments
Β (0)