[Baekjoon] 24416 - πŸ”’μ•Œκ³ λ¦¬μ¦˜ μˆ˜μ—… - ν”Όλ³΄λ‚˜μΉ˜ 수 1

ChobbyΒ·2023λ…„ 12μ›” 5일
1

Baekjoon

λͺ©λ‘ 보기
108/108

πŸ˜€λ¬Έμ œ

μ˜€λŠ˜λ„ μ„œμ€€μ΄λŠ” 동적 ν”„λ‘œκ·Έλž˜λ° μˆ˜μ—… 쑰ꡐλ₯Ό ν•˜κ³  μžˆλ‹€. μ•„λΉ κ°€ μˆ˜μ—…ν•œ λ‚΄μš©μ„ 학생듀이 잘 μ΄ν•΄ν–ˆλŠ”μ§€ 문제λ₯Ό ν†΅ν•΄μ„œ ν™•μΈν•΄λ³΄μž.

μ˜€λŠ˜μ€ n의 ν”Όλ³΄λ‚˜μΉ˜ 수λ₯Ό μž¬κ·€ν˜ΈμΆœκ³Ό 동적 ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ λ°°μ› λ‹€. μž¬κ·€ν˜ΈμΆœμ— λΉ„ν•΄ 동적 ν”„λ‘œκ·Έλž˜λ°μ΄ μ–Όλ§ˆλ‚˜ λΉ λ₯Έμ§€ 확인해 보자. μ•„λž˜ μ˜μ‚¬ μ½”λ“œλ₯Ό μ΄μš©ν•˜μ—¬ n의 ν”Όλ³΄λ‚˜μΉ˜ 수λ₯Ό ꡬ할 경우 μ½”λ“œ1 μ½”λ“œ2 μ‹€ν–‰ 횟수λ₯Ό 좜λ ₯ν•˜μž.

ν”Όλ³΄λ‚˜μΉ˜ 수 μž¬κ·€ν˜ΈμΆœ μ˜μ‚¬ μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

fib(n) {
    if (n = 1 or n = 2)
    then return 1;  # μ½”λ“œ1
    else return (fib(n - 1) + fib(n - 2));
}

ν”Όλ³΄λ‚˜μΉ˜ 수 동적 ν”„λ‘œκ·Έλž˜λ° μ˜μ‚¬ μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

fibonacci(n) {
    f[1] <- f[2] <- 1;
    for i <- 3 to n
        f[i] <- f[i - 1] + f[i - 2];  # μ½”λ“œ2
    return f[n];
}

πŸ˜μž…λ ₯

첫째 쀄에 n(5 ≀ n ≀ 40)이 주어진닀.


πŸ˜‚μΆœλ ₯

μ½”λ“œ1 μ½”λ“œ2 μ‹€ν–‰ 횟수λ₯Ό ν•œ 쀄에 좜λ ₯ν•œλ‹€.


🀣예제

예제 μž…λ ₯ 1 
5
예제 좜λ ₯ 1 
5 3
예제 μž…λ ₯ 2 
30
예제 좜λ ₯ 2 
832040 28

πŸ˜ƒμΆœμ²˜

  • 문제λ₯Ό κ²€μˆ˜ν•œ μ‚¬λžŒ: chansol, jhnah917, jinhan814, jthis, parkky, sait2000, tony9402
  • 문제λ₯Ό λ§Œλ“  μ‚¬λžŒ: MenOfPassion

πŸ˜„μ•Œκ³ λ¦¬μ¦˜ λΆ„λ₯˜

  • μˆ˜ν•™
  • λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°

πŸ˜Žλ‚˜μ˜ν’€μ΄

const input = require('fs').readFileSync('/dev/stdin').toString().trim()
const num = Number(input)
let [recursiveCount, dpCount] = [0, 0]

// μž¬κ·€ ν”Όλ³΄λ‚˜μΉ˜
function recursiveFibonacci(n) {
    if(n <= 2) {
        recursiveCount++
        return 1
    }
    return recursiveFibonacci(n-1) + recursiveFibonacci(n-2)
}

// DP ν”Όλ³΄λ‚˜μΉ˜
function dpFibonacci(n) {
    // 편의λ₯Ό μœ„ν•΄ 0을 μ•žμ— λ„£μ–΄μ€Œ, 즉 n=5 이라면 5λ°˜ν™˜
    const fibArr = [0, 1, 1]
    for(let i = 3; i <= n; i++) {
        const curFibonacci = fibArr[i-1] + fibArr[i-2]
        dpCount++
        fibArr.push(curFibonacci)
    }
    return fibArr.at(-1)
}

recursiveFibonacci(num)
dpFibonacci(num)

console.log(recursiveCount, dpCount)
profile
λ‚΄ 지식을 κ³΅μœ ν•  수 μžˆλŠ” λŒ€λ‹΄ν•¨

0개의 λŒ“κΈ€