알고리즘/SWEA
[파이썬] [SWEA] 4837. [파이썬 S/W 문제해결 기본] 2일차 - 부분집합의 합
SBOX Learning by doing
2021. 2. 20. 16:33
반응형
swexpertacademy.com/main/learn/course/subjectList.do?courseId=AVuPDN86AAXw5UW6
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. normal
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
N, K = map(int, input().split())
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
n = len(arr)
total = []
count = 0
for i in range(1 << n): # 1<<n:부분 집합의 개수
sum_list = []
for j in range(n): # 원소의 수만큼 비트를 비교함
if i & (1 << j): # i의 j번째 비트가 1이면 j번째 원소 출력
sum_list.append(arr[j])
total.append(sum_list)
for i in range(len(total)):
if len(total[i]) == N:
sum_total = 0
for l in range(len(total[i])):
sum_total += total[i][l]
if sum_total == K:
count += 1
print('#{} {}'.format(test_case,count))
반응형