본문 바로가기
ALGORITHM/SW Expert Academy

[SWEA/Python] 4837. 부분집합의 합

by 안녕나는현서 2021. 8. 13.
728x90

📌 문제

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

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

swexpertacademy.com

 

📌 문제 접근 방법

  1. 비트연산자를 사용해서 모든 부분집합 구한뒤, 조건에 맞는 부분집합을 골라내기
  2. later) 애초에 조건에 맞는 부분집합만 저장하는 방식으로 구현해봐도 좋을 듯!

 

📌 코드

import sys

sys.stdin = open('input.txt')

T = int(input())
A = [a for a in range(1, 13)]
len_A = len(A)

for t in range(1, T+1):
    N, K = map(int, input().split())
    subset = []

    for i in range(1<<len_A):
        temp = []
        for j in range(len_A):
            if i & (1<<j):
                temp.append(A[j])
        subset.append(temp)

    cnt = 0

    for set in subset:
        total = 0
        if len(set) == N:
            for num in set:
                total += num
            if total == K:
                cnt += 1

    print(f'#{t} {cnt}')
728x90

댓글