Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 1904
- 11047
- 1568
- 동적계획법
- 함수 arguments
- 함수 이놈
- 함수 parmater
- 1668
- Async/Await
- 1236
- 자류구조
- 렉시컬 스코프
- javascript
- 탐욕 알고리즘
- 1931
- 백준
- 배열같은배열아닌너
- event loop
- html5
- 함수 선언문
- 비동기처리
- 2667
- setTiemOut
- baekjoon
- 9461
- 11399
- 1302
- 호이스팅
- 1543
- 유사배열
Archives
- Today
- Total
두치의 개발공부
BaekJoon_1003(피보나치 함수) 본문
문제풀이
0,1 이 각각 몇번씩 호출되는지 2가지의 경우로 나누어 생각하여 풀었다.
N = 0일 때는 0이 1번, 1이 0번
N = 1일 때는 0이 0번, 1이 1번
N = 2일 때는 0이 1번, 1이 1번
N = 3일 때는 0이 1번, 1이 2번
N = 4일 때는 0이 2번, 1이 3번
N = 5일 때는 0이 3번, 1이 5번
0이 반복되는 횟수는 1,0,1,1,2,3...
1이 반복되는 횟수는 0,1,1,2,3,5...
각각 0,1이 피보나치 수열의 형태를 보이고 있다.
이를 점화식으로 표현하면 아래와 같이 나타난다.
0의 갯수 => F(n) = F(n-1) + F(n-2)
1의 갯수 => F(n) = F(n-1) + F(n-2)
0의 초기값은 dp[0] = 1, dp[1] = 0
1의 초기값은 dp[0] = 0, dp[1] = 1
코드
const answer = (arr) => {
const inputArr = [];
const parseN = Number(arr[0]);
for (let index = 1; index <= parseN; index++) {
inputArr.push(Number(arr[index]))
};
for (let index = 0; index < inputArr.length; index++) {
// 1. 0 호출되는 리스트 만들기
const zeroArr = Array.from({ length: inputArr[index] + 1 }, () => 0);
// 1-2. 초기값 설정
zeroArr[0] = 1;
zeroArr[1] = 0;
// 1-3. 점화식 적용
for (let i = 2; i < zeroArr.length; i++) {
zeroArr[i] = zeroArr[i - 1] + zeroArr[i - 2]
}
// 2. 1 호출되는 리스트 만들기
const oneArr = Array.from({ length: inputArr[index] + 1}, () => 0);
// 2-1. 초기값 설정
oneArr[0] = 0;
oneArr[1] = 1;
// 2-2. 점화식 적용
for (let j = 2; j < oneArr.length; j++) {
oneArr[j] = oneArr[j - 1] + oneArr[j - 2]
}
// 3. 화면 출력
console.log(`${zeroArr[inputArr[index]]} ${oneArr[inputArr[index]]}`);
}
}
const input = [];
require("readline")
.createInterface(process.stdin, process.stdout)
.on("line", (line) => {
input.push(line);
})
.on("close", () => {
answer(input);
process.exit();
});
소스코드는 깃헙에서도 확인 가능합니다 :)
https://github.com/duduchi/Algorithm/tree/main/Dynamic
'알고리즘' 카테고리의 다른 글
BaekJoon_11399(ATM) (0) | 2022.05.06 |
---|---|
BaekJoon_1932(정수 삼각형) (0) | 2022.05.03 |
BaekJoon_1149(RGB 거리) (0) | 2022.05.03 |
BaekJoon_9461 (파도반 수열) (0) | 2022.04.30 |
BaekJoon_1904(01타일) (0) | 2022.04.28 |