[백준 문제] 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]