새소식

Baekjoon

[BaekJoon] 1182 번 부분수열의 합 문제 - (nodejs)

  • -
728x90
문제 번호 :  1182 번

문제 바로가기 https://www.acmicpc.net/problem/1182

 

<<< 문제 내용 >>>



 

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

const comb = (count, originArr, inArr) => {
  if (count === -1) return;

  if (inArr.length >= 1) {
    if (inArr.reduce((a, b) => a + b) === target) cnt++;
  }

  for (let i = 0; i < originArr.length; i++) {
    let temp = [];
    temp = originArr.slice(i + 1);

    inArr.push(originArr[i]);
    comb(count - 1, temp, inArr);
    inArr.pop();
  }
};

let [arrLen, target] = input.shift().split(" ").map(Number);
let origin = input[0].split(" ").map(Number);
let cnt = 0;

comb(arrLen, origin, []);

console.log(cnt);

*조합으로 1개부터 5개까지 합친 값들을 뽑고, 값을 출력한다.

 

백트래킹이랑 섞은 문제이다. 이 문제가 어렵다면 재귀 순서를 노트에 적어가면서 연습하면 익숙해질 수 있다.

 

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.