알고리즘
[백준] 01타일(1904)
69 views
블로그 불러오는 중...
알고리즘

const input =
process.platform === "linux"
? require("fs").readFileSync("/dev/stdin").toString().trim().split("\n")
: require("fs").readFileSync("./input.txt").toString().trim().split("\r\n");
const [N] = input[0].split(" ").map((el) => parseInt(el));
const dp = [0, 1, 2];
const tile = (n) =>
dp[n] ? dp[n] : (dp[n] = (tile(n - 2) + tile(n - 1)) % 15746);
console.log(tile(N));문제의 경우, N이 주어진다.
형태의 피보나치의 수를 이루게 된다. 즉 f(n-2) + f(n-1) = f(n) 형태의 점화식을 만족한다.
해당 함수를 재귀를 이용하여 풀었으며, 재귀의 경우 반복 연산하는 것이 많아 배열을 통해 수를 저장하였다.
메모리 제한이 256mb라 for문을 이용해서 푼 것이 아닌, memoization 하여 풀었다.