1182

이연희·2022년 6월 10일
0

Algorithm

목록 보기
3/9
import sys
input=sys.stdin.readline
n,s=map(int,input().split())
lst=list(map(int,input().split()))
cnt=0
def dfs(idx,hap):
    # print(idx,hap)
    global cnt
    if idx>=n:
        return
    hap+=lst[idx]
    if hap==s:
        cnt+=1
    #현재 lst[idx]를 선택하지 않은 경우의 가지
    dfs(idx+1,hap-lst[idx])
    #현재 lst[idx]를 선택한 경우의 가지
    dfs(idx+1,hap)
dfs(0,0)
print(cnt)

dfs에 idx와 더한 정보인 hap을 넣어서 재귀를 돌린다.
dfs(idx+1,hap-lst[idx]): 현재 idx 값을 선택하지 않았을 경우
dfs(idx+1,hap): 현재 idx 값을 포함한 경우

profile
공부기록

0개의 댓글