[실버2] 1182번 : 부분수열의 합

Quesuemon·2021년 4월 6일
0

코딩테스트 준비

목록 보기
64/111

🛠 문제

https://www.acmicpc.net/problem/1182


👩🏻‍💻 해결 방법

subSet 함수의 인자로 idx와 현재까지의 합 now_s를 주어 하나씩 값을 더해가면서 now_s가 s와 같다면 answer+1을 해주었다
재귀적으로 subSet을 호출할 때는 해당 idx 데이터를 포함하는 경우와 포함하지 않는 경우 두 번 호출해야 했다

소스 코드

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

answer = 0
def subSet(idx, now_s):
  global answer

  if idx >= n:
    return
  
  now_s += data[idx]
  if s == now_s:
    answer += 1
  
  subSet(idx+1, now_s)
  subSet(idx+1, now_s - data[idx])

subSet(0, 0)
print(answer)

0개의 댓글