유물/└ 백준

<백준(node.js)> 2775번: 부녀회장이 될테야

디벅잉 2022. 2. 19. 17:27
728x90

 

🤖

 

문제

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

 

2775번: 부녀회장이 될테야

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다

www.acmicpc.net

 

풀이

const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt";
const INPUT_ARR = require("fs")
  .readFileSync(filePath)
  .toString()
  .trim()
  .split("\n");

const CASE_NUM = +INPUT_ARR[0];
const CASE_ARR = INPUT_ARR.slice(1);

function familyNum(k, n) {
  if (k === 0) {
    return n;
  }
  if (n === 1) {
    return 1;
  }

  return familyNum(k - 1, n) + familyNum(k, n - 1);
}

for (let i = 0; i < CASE_NUM; i++) {
  let k = +CASE_ARR[i * 2];
  let n = +CASE_ARR[i * 2 + 1];
  console.log(familyNum(k, n));
}

1. (line 11~20) 각 호실에 사는 동거인의 수는 바로 아래 호실의 동거인 수와 바로 왼편 호실의 동거인 수의 합과 같습니다. 따라서 재귀함수를 사용하여 문제를 해결할 수 있습니다.

2. (line 22~26) for문으로 주어진 케이스를 돌며, 앞서 정의한 함수의 결과값을 출력합니다.

 

728x90