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
32
33
34
35
import java.util.Scanner;
 
public class BOJ_1182 {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        int n = sc.nextInt();
        int result = sc.nextInt();
        int[] arr = new int[n];
        int bitMax = (int) (Math.pow(2, n) - 1);
        int cnt = 0;
 
        for (int i = 0; i < n; i++) { // Initialization
            arr[i] = sc.nextInt();
        }
 
        for (int bit = 1; bit <= bitMax; bit++) { // 모든 비트 순회
            int sum = 0;
 
            for (int i = 0; i < n; i++) { // 1인 비트 체크
                if ((bit & (1 << i)) != 0)
                    sum += arr[i];
            }
 
            if (sum == result)
                cnt++;
        }
 
        System.out.println(cnt);
 
    }
 
}
 
cs

'공부 > 알고리즘문제' 카테고리의 다른 글

백준 16234 인구 이동  (0) 2019.04.08
백준 14503 로봇 청소기  (0) 2017.05.01
백준 14500 테트로미노  (0) 2017.04.24
백준 7562 나이트의 이동  (0) 2017.04.15
백준 2178 미로 탐색  (0) 2017.04.15