[백준 문제] 1182번 부분수열의 합 - 재귀함수 사용 (파이썬)


[백준 문제] 1182번 부분수열의 합 - 재귀함수 사용 (파이썬)

1) 내답이 백준 사이트에서는 틀렸다는데 그 이유를 모르겠다..

# 다른 사람 답안
n, s = map(int, input().split())
a = list(map(int, input().split()))
ans = 0

def solve(index, sums):
    global ans
    if index >= n:
        if sums == s:
            ans += 1
        return
    solve(index+1, sums+a[index])
    solve(index+1, sums)

solve(0, 0)
print(ans if s else ans-1)
4 0
-2 1 0 1
3
# 나의 답안
def sum_part(n, s, num, arr, i) :
    if len(arr) > 0 and sum(arr) == s :
        ans.append(arr)
        return
    if i >= len(num) :
        return;
    sum_part(n, s, num, arr+[num[i]], i+1);
    sum_part(n, s, num, arr, i+1);

n, s = map(int, input().split())
num = list(map(int, input().split()))
arr = []
ans = []
i = 0   
sum_part(n, s, num, arr, i)
print(len(ans))
4 0
-2 1 0 1
3
# 내 답안에 대한 디테일
def sum_part(n, s, num, arr, i) :
    if len(arr) > 0 and sum(arr) == s :
        print(arr)
        return
    if i >= len(num) :
        return;
    sum_part(n, s, num, arr+[num[i]], i+1);
    sum_part(n, s, num, arr, i+1);
n, s = map(int, input().split())
num = list(map(int, input().split()))
arr = []
ans = []
i = 0   
sum_part(n, s, num, arr, i)
4 0
-2 1 0 1
[-2, 1, 0, 1]
[-2, 1, 1]
[0]





© 2018. by statssy

Powered by statssy