본문 바로가기

BOJ/다이나믹 프로그래밍

BOJ : 24416 알고리즘수업 피보나치(1) (JS)

728x90

소스코드

let fs = require('fs');
const filePath = process.platform === `linux` ? `/dev/stdin` : `예제.txt`; 
let input = fs.readFileSync(filePath).toString().split(' ');
const c = console.log

n = Number(input[0])

let dp = []

dp[0] = 0
dp[1] = 1
dp[2] = 1
dp[3] = 2

for(let i = 4 ; i < 41 ; i++){
    dp[i] = dp[i-1] + dp [i-2]
}

let code1 = dp[n]

let code2 = n-2

c(`${code1} ${code2}`)

 

풀이

우선, 코드2 같은경우에는 -2 만큼의 횟수만큼만 실행되고

코드1은 피보나치수가 1,2인 경우 1번, 3인 경우 2번 실행되고 4부터 점화식이 존재하는데

fib(4) = fib(2) + fib(3) = fib(2) + fib(2) + fib(1) 임을 알게 되어서 

 

dp테이블을 작성해 dp[i] = dp[i-1] + dp[i-2] 를 해주었습니다.

 

문제

https://www.acmicpc.net/problem/24416

 

24416번: 알고리즘 수업 - 피보나치 수 1

오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍

www.acmicpc.net

 

728x90

'BOJ > 다이나믹 프로그래밍' 카테고리의 다른 글

BOJ : 2193 이친수 (JS)  (0) 2022.12.29
BOJ : 1904 01수열 (JS)  (2) 2022.12.28
BOJ : 1010 다리놓기 (JS)  (2) 2022.12.21
BOJ : 11051 이항계수2 (파이썬)  (0) 2022.12.20
BOJ : 11050 이항계수1 (파이썬)  (0) 2022.12.20