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 |