-
Notifications
You must be signed in to change notification settings - Fork 125
/
Copy pathdonghyeon95.java
64 lines (56 loc) Β· 1.71 KB
/
donghyeon95.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
* μ²μ νμ΄
* nκ° μ€ 2λ₯Ό μ ννλ μ‘°ν© λ¬Έμ λ‘ ν΄κ²°
* 21λΆν° overflow λ°μ => λ무 ν° μ«μ
* μ΄λλ‘ νΈλ €λ©΄ 1κ³Ό 2μ κ°―μκ° μ ννκ² κ°μμ§λ κ²½μ° * 2λ₯Ό νλ©΄ f(1κ°―μ, 2κ°―μ) ν λ, f(x, y) = f(y,x)λ κ°λ€λ μ μ μ°©μνλ©΄ 42κΉμ§λ ν μ μμ λ― νλ€.
* νμ§λ§ 45λΌμ μλλ κ±° κ°λ€.
* */
// public int climbStairs(int n) {
// // Nκ°μ 1μ€μμ λ¬Άμ΄λ κ²½μ°μ μκ° λͺκ°μΈμ§
// // 5 => 1 1 1 1 1
// // 2μ κ°―μκ° 0κ° 2/n κΉμ§ μλ κ²½μ°μ μλ₯Ό ꡬνλ©΄ λ λ―
// long result = 0;
// int max2Cnt = n/2;
// for (int i=0; i<max2Cnt+1; i++) {
// int cnt = n-2*i + i; // μ‘°ν©μ ꡬν΄μΌ νλ μ«μμ κ°―μλ 2μ κ°μ + 1μ κ°―μ
// result += factorial(cnt) / (factorial(i) * factorial(cnt-i));
// }
//
// for (long k: nFact) {
// System.out.println(k);
// }
//
// return (int)result;
// }
//
// public long factorial(int i) {
// if (nFact[i] != 0) return nFact[i];
// if (i == 0 || i == 1) {
// nFact[i] = 1;
// return 1;
// }
//
// long result = i * factorial(i - 1);
// nFact[i] = result;
// return result;
// }
/*
* λλ²μ§Έ νμ΄
* λμ κ³λ¨μ μ€λ₯΄λ κ²½μ° = μ΄μ μ 1μΉΈ μ€λ₯Έ κ²½μ°μ μ + μ΄μ μ 2μΉΈ μ€λ₯Έ κ²½μ°μ μ
* μκ° λ³΅μ‘λ O(N)μ ν΄κ²° κ°λ₯νλ€.
* */
class Solution {
public int climbStairs(int n) {
// kλ²μ§Έμ κ³λ¨μ μ€λ₯΄λ κ²½μ°μ μλ
// k-1 λ²μ§Έ κ³λ¨μ μ€λ₯΄λ κ²½μ°μ μ + K-2λ²μ§Έ κ³λ¨μ μ€λ₯΄λ κ²½μ°μ μ
if (n <= 2) return n;
int first = 1;
int second = 2;
for (int i = 3; i <= n; i++) {
int third = first + second;
first = second;
second = third;
}
return second;
}
}