Skip to content

Commit 09acb8f

Browse files
committed
Climbing Stairs
1 parent 8e221d8 commit 09acb8f

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

โ€Žclimbing-stairs/JisooPyo.kt

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package leetcode_study
2+
3+
import io.kotest.matchers.shouldBe
4+
import org.junit.jupiter.api.Test
5+
6+
/**
7+
* Leetcode
8+
* 70. Climbing Stairs
9+
* Easy
10+
*
11+
* ์‚ฌ์šฉ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜: Dynamic Programming
12+
* n๊ฐœ์˜ ๊ณ„๋‹จ์„ ์˜ค๋ฅด๋Š” ๋ฐฉ๋ฒ• = n-1๊ฐœ์˜ ๊ณ„๋‹จ์„ ์˜ค๋ฅด๋Š” ๋ฐฉ๋ฒ• ์ˆ˜ + n-2๊ฐœ์˜ ๊ณ„๋‹จ์„ ์˜ค๋ฅด๋Š” ๋ฐฉ๋ฒ•
13+
*/
14+
class ClimbingStairs {
15+
/**
16+
* Runtime: 0 ms(Beats: 100.00 %)
17+
* Time Complexity: O(n)
18+
* - ๋ฐฐ์—ด ์ˆœํšŒ
19+
*
20+
* Memory: 33.94 MB(Beats: 18.06 %)
21+
* Space Complexity: O(n)
22+
* - n+1 ํฌ๊ธฐ์˜ ๋ฐฐ์—ด ์‚ฌ์šฉ
23+
*/
24+
fun climbStairs1(n: Int): Int {
25+
if (n == 1) return 1
26+
if (n == 2) return 2
27+
28+
val arr = IntArray(n + 1)
29+
arr[1] = 1
30+
arr[2] = 2
31+
for (i in 3..n) {
32+
arr[i] = arr[i - 1] + arr[i - 2]
33+
}
34+
return arr[n]
35+
}
36+
37+
/**
38+
* ๋ฐฐ์—ด์„ ์“ฐ์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐœ์„ ํ•œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
39+
* Runtime: 0 ms(Beats: 100.00 %)
40+
* Time Complexity: O(n)
41+
* - n๋ฒˆ ์ˆœํšŒ
42+
*
43+
* Memory: 34.06 MB(Beats: 15.90 %)
44+
* Space Complexity: O(1)
45+
* - ์‚ฌ์šฉ๋˜๋Š” ์ถ”๊ฐ€ ๊ณต๊ฐ„์ด ์ž…๋ ฅ ํฌ๊ธฐ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ผ์ •ํ•จ
46+
*/
47+
fun climbStairs2(n: Int): Int {
48+
if (n == 1 || n == 2) return n
49+
var firstCase = 1
50+
var secondCase = 2
51+
var totalSteps = 0
52+
53+
for (steps in 3..n) {
54+
totalSteps = firstCase + secondCase
55+
firstCase = secondCase
56+
secondCase = totalSteps
57+
}
58+
return totalSteps
59+
}
60+
61+
@Test
62+
fun test() {
63+
climbStairs1(2) shouldBe 2
64+
climbStairs1(3) shouldBe 3
65+
climbStairs2(2) shouldBe 2
66+
climbStairs2(3) shouldBe 3
67+
}
68+
}

0 commit comments

Comments
ย (0)