반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Archives
Today
Total
관리 메뉴

undefined

[백준 - node.js] 1, 2, 3 더하기 9095번 본문

Coding Test

[백준 - node.js] 1, 2, 3 더하기 9095번

JavaScripter 2022. 9. 22. 11:20
반응형

문제 설명

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

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net


문제 풀이

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];
let n = 0;
let count = 0;

rl.on('line', function (line) {
  if (!count) n = +line;
  else input.push(+line);
  count++;
}).on('close', function () {
  solution(input);
  process.exit();
});

const solution = input => {
  // 초기세팅
  let count = 0;
  let answer = [];

  // 테스트 케이스 만큼 돌리기
  for (let n of input) {
    // dfs
    const dfs = sum => {
      // base case => sum이 주어진 n과 같다면 카운팅
      if (sum === n) {
        count++;
        return;
      }
      // 1~3까지 범위 순회
      for (let i = 1; i <= 3; i++) {
        // sum이 n보다 작다면 재귀로 더해주기를 반복한다
        // 같은 경우까지 pass 해줘야 sum = n이 되었을 때 카운팅됨
        if (sum + i <= n) {
          dfs(sum + i);
        }
      }
    };
    dfs(0);
    answer.push(count);
    count = 0;
  }
  console.log(answer.join('\n'));
};
반응형
Comments