Lewis's Tech Keep

[백준] 부분수열의 합 본문

Java/알고리즘

[백준] 부분수열의 합

Lewis Seo 2021. 3. 7. 23:57

참고: www.acmicpc.net/problem/1182

 

1182번: 부분수열의 합

첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.

www.acmicpc.net

 

 - 백트래킹 문제

 - dfs에서 찾아갈 때의 느낌과 유사하므로 잘 기억해 둘 것

 

 

더보기
import java.util.Scanner;

public class Solution {
    private static int n;
    private static int s;
    private static int[] arr = new int[30];
    private static int count = 0;

    private static void func(int cur, int sum) {
        if(cur == n) {
            if(sum == s) {
                count++;
            }
            return;
        }
        func(cur+1, sum);
        func(cur+1, sum+arr[cur]);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        s = sc.nextInt();
        for(int i=0; i<n; i++) {
            arr[i] = sc.nextInt();
        }
        func(0, 0);
        if(s == 0) count--;
        System.out.println(count);

    }
}

'Java > 알고리즘' 카테고리의 다른 글

[백준] 동전1  (0) 2021.03.09
[백준] 스티커  (0) 2021.03.08
[백준] N-Queen  (0) 2021.03.07
[백준] N과 M  (0) 2021.03.07
[백준] 1로 만들기 -2  (0) 2021.03.06
Comments