global 변수 안쓰고 탑다운 방식으로 구현
import sys
input = sys.stdin.readline
def dfs(depth, weight):
if depth == N:
return 1
ret = 0
for i in range(N):
next_weight = weight - K + a[i]
if not check[i] and next_weight >= 500:
check[i] = True
ret += dfs(depth + 1, next_weight)
check[i] = False
return ret
N, K = map(int, input().split())
a = list(map(int, input().split()))
check = {i: False for i in range(N)}
print(dfs(0, 500))
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 1987 알파뱃 (0) | 2021.10.19 |
---|---|
[백준][Python] 18115 카드 놓기 (0) | 2021.10.19 |
[백준][Python] 2164 카드2 (0) | 2021.10.19 |
[백준][Python] 16507 어두운 건 무서워 (0) | 2021.10.18 |
[백준][Python] 2670 연속 부분 최대곱 (0) | 2021.10.18 |