코딩테스트 연습

백준 1182 - 부분수열의 합

gurwhddl 2023. 4. 22. 22:20

문제

N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오.

코드

const dfs = (i, sum) => {
  console.log(i, sum);
  if (i >= n) {
    return;
  }
  sum += input[i];
  if (sum === target) {
    result += 1;
  }
  dfs(i + 1, sum - input[i]);
  dfs(i + 1, sum);
};
dfs(0, 0);
console.log(result);

풀이

부분수열의 의미가 여기서는 index 0 1 2 , 2 3 4 이렇게 붙어있는것만 아니라 0 2 4 , 3 4 5 ... 같은것도 다 포함
그래서 항상 배열에서 이 값을 포함할건지 or 포함 안하고 넘어갈건지를 선택해줘야 함