부분 수열의 합 실버2 (백준, DP)
2023. 1. 26. 18:37ㆍ코딩 테스트 준비
728x90
반응형
import sys
# 백트래킹 함수
def back_tracking(idx, res):
global cnt
# 현재 idx가 정수의 개수보다 크면 리턴
if idx >= n:
return
# 수열에 현재 idx 정수를 더한다.
res += k[idx]
# 현재 수열이 s라면 카운트
if res == s:
cnt += 1
back_tracking(idx + 1, res) # 현재 idx 정수를 더한 것
back_tracking(idx + 1, res - k[idx]) # 현재 idx 정수를 더하지 않은 것(백트래킹)
n, s = map(int, sys.stdin.readline().split())
k = list(map(int, sys.stdin.readline().split()))
cnt = 0
back_tracking(0, 0)
print(cnt)
백트래킹 기법을 이해하고 공부할 필요성을 느낀다.
728x90
반응형
'코딩 테스트 준비' 카테고리의 다른 글
기타리스트 실버1 (백준, DP) (0) | 2023.01.27 |
---|---|
가장 큰 증가 부분 수열 실버2 (백준, DP) (0) | 2023.01.26 |
팰린드롬 만들기 실버3 (백준, 문자열) (0) | 2023.01.26 |
제곱 수의 합 실버 2 (백준, DP) (1) | 2023.01.24 |
랜선 자르기 - 실버 2 (백준, 이분탐색) (0) | 2023.01.24 |