평범한 조합문제입니다.
대신 조건에 만족하는 조합에서 return을 주면 그 후에 다른 수를 취하더라도 조건에 맞을 수 있는 경우가 걸러지기 때문에 return을 하면 안됩니다.
import sys
input = sys.stdin.readline
def dfs(idx, s, min_n, max_n):
global cnt
if L <= s <= R and max_n - min_n >= X:
cnt += 1
if s > R:
return
for next_idx in range(idx+1,N):
dfs(next_idx, s+arr[next_idx], min(min_n, arr[next_idx]), max(max_n, arr[next_idx]))
N, L, R, X = map(int, input().split())
arr = list(map(int, input().split()))
cnt = 0
dfs(-1, 0, float('inf'), 0)
print(cnt)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 17141 연구소 2 (0) | 2021.09.24 |
---|---|
[백준][Python] 17484 진우의 달 여행 (0) | 2021.09.23 |
[백준][Python] 1918 후위표기식 (0) | 2021.09.19 |
[백준][Python] 17129 윌리암슨 수액빨이딱따구리가 정보섬에 올라온 이 (0) | 2021.09.19 |
[백준][Python] 21318 피아노체조 (0) | 2021.09.19 |