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 |