최대 1 분 소요

풀이

파이썬의 이터레이터 라이브러리를 불러와 각 부분 수열 의 조합들을 부르트 포스 방식으로 구현합니다. 이때 조합들의 sum 값 이 지정한 수와 같을 경우에는 카운트를 1 증가 시킵니다.

코드


# 1182 부분수열의 합


from itertools import *

n,s = map(int,input().split())

_arr = list(map(int,input().split()))
_stack = []
cnt = 0

for i in range(1,len(_arr)+1):
    # 1. 조합들을 만든다 중복 x 
    k = list((combinations(_arr, i)))
    # 2. 만든조합에서 sum 이 0 이 되는 값을 찾으면 카운트 +1
    for i in k:
        if sum(i) == s:
            cnt += 1

#     _stack.append(k)
    
# print(_stack)
    

print(cnt)

카테고리:

업데이트:

댓글남기기