[λ°±μ€] 13301λ² - νμΌ μ₯μλ¬Ό (C++)
13301λ²: νμΌ μ₯μλ¬Ό
λꡬ λ¬μ±κ³΅μμ λλ¬ μ¨ μ§μλ μ΅κ·Όμ μλ‘ λ§λ νμΌ μ₯μλ¬Όμ λ³΄κ² λμλ€. νμΌ μ₯μλ¬Όμ μ μ¬κ°ν νμΌμ λΆμ¬ λ§λ ννμλλ°, ν λ³μ΄ 1μΈ μ μ¬κ°ν νμΌλΆν° μμνμ¬ λ§μΉ μ΅λ¬΄μ‘°κ°
www.acmicpc.net
λ¬Έμ
λꡬ λ¬μ±κ³΅μμ λλ¬ μ¨ μ§μλ μ΅κ·Όμ μλ‘ λ§λ νμΌ μ₯μλ¬Όμ λ³΄κ² λμλ€. νμΌ μ₯μλ¬Όμ μ μ¬κ°ν νμΌμ λΆμ¬ λ§λ ννμλλ°, ν λ³μ΄ 1μΈ μ μ¬κ°ν νμΌλΆν° μμνμ¬ λ§μΉ μ΅λ¬΄μ‘°κ°μ λμ λͺ¨μμ²λΌ μ μ ν° νμΌμ λΆμΈ ννμλ€. νμΌ μ₯μλ¬Όμ μΌλΆλ₯Ό 그리면 λ€μκ³Ό κ°λ€.

κ·Έλ¦Όμμ νμΌμ μ ν μλ κ° νμΌμ ν λ³μ κΈΈμ΄λ₯Ό λνλΈλ€. νμΌ μ₯μλ¬Όμ ꡬμ±νλ μ μ¬κ°ν νμΌ ν λ³μ κΈΈμ΄λ₯Ό μμͺ½ νμΌλΆν° μμνμ¬ μ°¨λ‘λ‘ μ μΌλ©΄ λ€μκ³Ό κ°λ€.
1, 1, 2, 3, 5, 8, ...
μ§μλ λ¬Έλ μ΄λ¬ν νμΌλ€λ‘ ꡬμ±λλ ν° μ§μ¬κ°νμ λλ κ° κΆκΈν΄μ‘λ€. μλ₯Ό λ€μ΄, μ²μ λ€μ―κ°μ νμΌμ΄ ꡬμ±νλ μ§μ¬κ°ν(μμμ λΉ¨κ°μμΌλ‘ νμν μ§μ¬κ°ν)μ λλ λ 26μ΄λ€.
νμΌμ κ°μ N(1 ≤ N ≤ 80)μ΄ μ£Όμ΄μ‘μ λ, Nκ°μ νμΌλ‘ ꡬμ±λ μ§μ¬κ°νμ λλ λ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
νμ€ μ λ ₯μΌλ‘ λ€μ μ λ³΄κ° μ£Όμ΄μ§λ€. μ λ ₯μ ν μ€λ‘ ꡬμ±λλ©° μ΄ μ€μλ νμΌμ κ°μλ₯Ό λνλ΄λ μ μ N(1 ≤ N ≤ 80)μ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
νμ€ μΆλ ₯μΌλ‘ N κ°μ νμΌμ΄ ꡬμ±νλ νμΌ μ₯μλ¬Ό μ§μ¬κ°νμ λλ λ₯Ό μΆλ ₯νλ€.
64λΉνΈ μ μνμΈ “long long” μλ£νμ μ¨μΌν μ μμ
μλΈνμ€ν¬
1 | 21 | N ≤ 7 |
2 | 53 | N ≤ 40 |
3 | 26 | μλμ μ μ½μ‘°κ±΄ μ΄μΈμ μ무 μ μ½μ‘°κ±΄μ΄ μλ€(μ΄ κ²½μ° 64λΉνΈ μ μνμΈ “long long” μλ£νμ μ¨μΌν μ μμ). |
νμ΄κ³Όμ
λ¬Έμ μμ μꡬνλ μ¬νμ νΌλ³΄λμΉμ μλ₯Ό μ΅λ¬΄μ‘°κ°μ λμ λͺ¨μμ²λΌ λ§λ€μμλ λμ€λ nλ²μ§Έ μ¬κ°νμ λλλ₯Ό ꡬν΄μΌνλ λ¬Έμ μμμ΅λλ€.
κ·Έλμ νΌλ³΄λμΉμ μκ° "f[n] = f[n - 1] + f[n - 2]"μΈ μ νμμΌλ‘ κ³μ°μ΄ λλ λ¬Έμ μμ μꡬνλ μ¬κ°νμ λλλ μΌλ¨ κ³μ°μ ν΄λ³΄μνκ³ κ³μ°μ ν΄λ³΄λ
n | ν¬κΈ° | μΆλ ₯κ° |
1 | κ°λ‘ : 1 μΈλ‘ : 1 | 4 |
2 | κ°λ‘ : 1 μΈλ‘ : 2 | 6 |
3 | κ°λ‘ : 3 μΈλ‘ : 2 | 10 |
4 | κ°λ‘ : 3 μΈλ‘ : 5 | 16 |
μμ κ°μ κ²°κ³Όλ₯Ό νμΈν΄ λ³Ό μ μμκ³ nλ€μ μΆλ ₯κ°λ€μ μλ‘ λΉκ΅ν΄λ³΄λ νΌλ³΄λμΉμ μμ κ°μ΄
"f[n] = f[n - 1] + f[n - 2]" ννμ μ νμμ΄ λμ€λ κ²μ νμΈν μ μμμ΅λλ€.
code
#include <iostream>
long long f[81];
long long dp(long long n)
{
if (n == 1) return (4);
if (n == 2) return (6);
if (n == 3) return (10);
if (f[n] != 0) return (f[n]);
return (f[n] = dp(n - 1) + dp(n - 2));
}
int main(void)
{
long long n;
std::cin >> n;
std::cout << dp(n);
return (0);
}
νκΈ°
νΌλ³΄λμΉμ μμ μ νμμ΄ κ°λ€λ λΆλΆμ΄ μ κΈ°νκΈ°λ νκ³ , λλΆμ μ½κ² μ κ·Όν μ μμλ κ±° κ°μ΅λλ€.