μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- λλΉμ°μ νμ
- BFS
- db
- νλ‘κ·Έλλ¨Έμ€
- μμꡬνκΈ°
- μ λ ¬
- μλ£κ΅¬μ‘°
- λ°±μ€
- ν°μ€ν 리μ±λ¦°μ§
- κΉμ΄μ°μ νμ
- LIS
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- 그리λ
- DP
- ꡬν
- κ·Έλννμ
- λμ κ³νλ²
- μκ³ λ¦¬μ¦
- μ°μ μμν
- λ¨Έμ§μνΈ
- μν
- νμ΄μ¬
- DFS
- μμνμ
- κ·Έλν
- λ³ν©μ λ ¬
- λ°μ΄ν°λ² μ΄μ€
- SQL
- λμ ν©
- μ€λΈμ
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[λ°±μ€] 2193λ²: μ΄μΉμ - C++ λ³Έλ¬Έ
λ¬Έμ
0κ³Ό 1λ‘λ§ μ΄λ£¨μ΄μ§ μλ₯Ό μ΄μ§μλΌ νλ€. μ΄λ¬ν μ΄μ§μ μ€ νΉλ³ν μ±μ§μ κ°λ κ²λ€μ΄ μλλ°, μ΄λ€μ μ΄μΉμ(pinary number)λΌ νλ€. μ΄μΉμλ λ€μμ μ±μ§μ λ§μ‘±νλ€.
- μ΄μΉμλ 0μΌλ‘ μμνμ§ μλλ€.
- μ΄μΉμμμλ 1μ΄ λ λ² μ°μμΌλ‘ λνλμ§ μλλ€. μ¦, 11μ λΆλΆ λ¬Έμμ΄λ‘ κ°μ§ μλλ€.
μλ₯Ό λ€λ©΄ 1, 10, 100, 101, 1000, 1001 λ±μ΄ μ΄μΉμκ° λλ€. νμ§λ§ 0010101μ΄λ 101101μ κ°κ° 1, 2λ² κ·μΉμ μλ°°λλ―λ‘ μ΄μΉμκ° μλλ€.
N(1 ≤ N ≤ 90)μ΄ μ£Όμ΄μ‘μ λ, Nμ리 μ΄μΉμμ κ°μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ Nμ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ Nμ리 μ΄μΉμμ κ°μλ₯Ό μΆλ ₯νλ€.
DPλ₯Ό μ΄μ©νμ¬ ν μ μλ λ¬Έμ .
μ΄μΉμλ 0μΌλ‘ μμνμ§ μμΌλ©΄μ 1μ΄ μ°μμΌλ‘ λ μ리 μ΄μ λμ€μ§ μλ μ΄μ§μλ₯Ό μλ―Ένλ€. 첫 λ²μ§Έ κ²½μ°λΆν° νμ΄μ°λ€λ³΄λ©΄ κΈλ°© κ·μΉμ μ°ΎμλΌ μ μλ λ¬Έμ λΌμ, μ΄λμ λ νΌμ³λκ³ μ 리λ₯Ό ν΄λ³΄λ©΄ λ€μκ³Ό κ°λ€.
N = 1 : { 1 }
N = 2 : { 10 }
N = 3 : { 100, 101 }
N = 4 : { 1000, 1001, 1010 }
N = 5 : { 10000, 10001, 10010, 10100, 10101 }
....
맨 μ 10μ μ μΈνλ©΄ λ€μ μ«μκ° μΌμ ν κ·μΉμ κ°μ§κ³ λ°λ³΅λλ κ²μ λ³Ό μ μλ€.
N = 4λ₯Ό κ΄μ°°νλ©΄ 맨 μ 10 λ€μ N = 2μΌλμ μ΄μΉμκ° λΆμ΄ 1010μ΄ λλ κ²½μ°μ, N = 3μΌλ 맨 μμλ¦¬μΈ 1μ μ μΈν μ«μ(00, 01)μ΄ λΆμ΄ κ°κ° 1000, 1001μ΄ λλ κ²½μ°λ₯Ό λ³Ό μ μλ€.
λ§μ°¬κ°μ§λ‘ N = 5λ₯Ό κ΄μ°°νλ©΄ 맨 μ 10 λ€μ N = 3μΌλμ μ΄μΉμκ° λΆμ΄ 10100, 10101μ΄ λλ κ²½μ°μ, N = 4μΌλμ 맨 μμ리λ₯Ό μ μΈν μ«μ(000, 001, 010)μ΄ λΆμ΄ 10000, 10001, 10010μ΄ λλ κ²½μ°λ₯Ό λ³Ό μ μλ€.
μ΄λ κ² Nλ²μ§Έμ μ΄μΉμλ€μ (N - 1)λ²μ§Έμ (N - 2)λ²μ§Έ μ΄μΉμλ€μ μ‘°ν©μΌλ‘ λ§λ€μ΄μ§λ κ·μΉμ λ°κ²¬ν μ μλ€. λ°λΌμ μ νμμ λ€μκ³Ό κ°μ΄ λμ¨λ€.
D[N] = D[N - 1] + D[N - 2]
μ νμμ 보면 μκ² μ§λ§, μμ νΌλ³΄λμΉμμ΄μ΄λ€. μ€λ²νλ‘μ°λ₯Ό λ§κΈ° μν΄ μλ£νμ long longμΌλ‘ μ μΈν΄μ£Όλ κ²λ§ μ£Όμνλ©΄ λλ€. λ¬Έμ λ Bottom-up λ°©μμΌλ‘ νμλ€.
μ½λ
#include <cstdio>
#define MAX 91
long long DP(int num);
int main(void) {
int num;
scanf("%d", &num);
printf("%lld\n", DP(num));
return 0;
}
long long DP(int num) {
long long Step[MAX] = { 0 };
Step[1] = 1;
for(int i = 2; i <= num; i++) {
Step[i] = Step[i - 1] + Step[i - 2];
}
return Step[num];
}
'μ½λ©ν μ€νΈ μ€λΉ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 11055λ²: κ°μ₯ ν° μ¦κ° λΆλΆ μμ΄ - C++ (0) | 2021.07.25 |
---|---|
[λ°±μ€] 11053λ²: κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄ - C++ (0) | 2021.07.24 |
[λ°±μ€] 11057λ²: μ€λ₯΄λ§ μ - C++ (0) | 2021.07.20 |
[λ°±μ€] 10844λ²: μ¬μ΄ κ³λ¨μ - C++ (0) | 2021.07.19 |
[λ°±μ€] 2579λ²: κ³λ¨ μ€λ₯΄κΈ° - C++ (0) | 2021.07.18 |