풀이1
T=int(input())
A=list(range(1,13))
for tc in range(1,T+1):
n,k=map(int,input().split())
cnt=0
for i in range(1<<12):
lst=[]
total=0
for j in range(12):
if i & (1<<j):
lst.append(A[j])
print(lst)
total+=A[j]
if len(lst)==n and total==k:
cnt+=1
print(f'#{tc} {cnt}')
비트연산으로 모든 부분집합을 찾았다.
풀이2
from itertools import combinations
T = int(input())
for tc in range(1, T + 1):
A=list(range(1, 13))
n,k = map(int, input().split())
ans=list(set(combinations(A, n)))
cnt=0
for i in ans:
if sum(i) == k :
cnt+=1
print(f'#{tc} {cnt}')
itertools의 combinations를 이용한다.
'Algorithm > SWEA' 카테고리의 다른 글
4864. [파이썬 S/W 문제해결 기본] 3일차 - 문자열 비교 (0) | 2022.10.08 |
---|---|
4843. [파이썬 S/W 문제해결 기본] 2일차 - 특별한 정렬 (0) | 2022.10.08 |
4831. [파이썬 S/W 문제해결 기본] 1일차 - 전기버스 (0) | 2022.10.05 |
파이썬, 자바 : SWEA 1946. 간단한 압축 풀기 (0) | 2022.07.05 |
파이썬, 자바 : SWEA 1989. 초심자의 회문 검사 (0) | 2022.07.05 |