4837 - 부분집합의 합

박재현·2022년 2월 15일
0

알고리즘 부수기

목록 보기
20/43
post-thumbnail

문제 설명

링크

문제 풀이

부분집합을 추출하는데 비트연산을 이용하였다.

  1. 비트연산을 이용해 부분집합을 추출한다.
  2. 추출한 부분집합을 sumArray에 넣는다.
  3. 부분집합의 길이가 N이고, 부분집합의 합이 K인 경우 result++

코드

T = int(input())
arr = [1,2,3,4,5,6,7,8,9,10,11,12]
for tc in range(1, T+1):
    result = 0
    N, K = map(int, input().split())
    for i in range(1 << 12):
        sumArray = []
        for j in range(12):
            if i & (1 << j):
                sumArray.append(arr[j])
        if len(sumArray) == N and sum(sumArray) == K:
            result += 1
    print(f'#{tc} {result}')
profile
공동의 성장을 추구하는 개발자

0개의 댓글