Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[SW Expert Academy] 2817. 부분 수열의 합 본문

SW_Expert

[SW Expert Academy] 2817. 부분 수열의 합

코드와이 2021. 2. 3. 23:30

문제링크

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7IzvG6EksDFAXB

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

완전탐색을 bit로 수행

package D3;

import java.util.Scanner;

public class 부분수열의_합 {
    
    public static void main(String[] args){
 
        Scanner sc = new Scanner(System.in);
         
        int T = sc.nextInt();
         
        for (int tc = 1; tc <= T; tc++) {
             
            int n = sc.nextInt();
            int k = sc.nextInt();
             
            int[] arr = new int[n];
            for (int i = 0 ; i < n ; i++) {
                arr[i] = sc.nextInt();
            }
             
            int ans = 0;
            for(int num = 1; num < (int) Math.pow(2, n); num++) {
                int sum = 0;
                for (int i = 0; i < n; i++) {
                    if ((num & (1 << i)) > 0) {
                        sum += arr[i];
                        if (sum > k) break;
                    }
                }
                if (sum == k) {
                    ans += 1;
                }
            }
             
            System.out.println("#" + tc + " " + ans);
             
        }
    }       
}