https://www.acmicpc.net/problem/2775
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split('\n');
const T = Number(input.shift());
for (let i = 0; i < T; i++) {
const k = +input.shift(); //층
const n = +input.shift(); //호
// 각 방당 인원수를 저장할 2차원 배열 선언
const house = Array.from(Array(k + 1), () => Array(n + 1).fill(0));
// 0층 (0층의 i호에는 i명이 산다.)
for (let i = 1; i <= n; i++) {
house[0][i] = i;
}
// 1 ~ k층 (k층 n호에는 k-1층 n호 + k층 n-1호만큼 산다.)
for (let i = 1; i <= k; i++) {
for (let j = 1; j <= n; j++) {
house[i][j] = house[i - 1][j] + house[i][j-1];
}
}
// k층 n호의 인원수 출력
console.log(house[k][n]);
}
const k = 1;
const n = 3;
const house = Array.from(k + 1), () => Array(n + 1).fill(0));
console.log(house);
// [ [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ]
2차 배열을 만들어 층과 호수에 대한 값을 넣는다.
그 값은 같은 층 전 호수와 밑에 층 같은 호수를 더하여 만든다. (사실 이게 계속 헷갈렸고.. 어덯게 구하는지 이해가 잘안갔음...)
우선 이문제는 어렵다 ... 아무래도 몇번 복습을 해야할꺼 같다. 이래놓고 복습을 잘 안한다.. 반성해야한다.
정신 차려!! 이동규!!!