반응형
18429번: 근손실
웨이트 트레이닝을 좋아하는 어떤 대학원생은, 현재 3대 운동 중량 500의 괴력을 소유하고 있다. 다만, 하루가 지날 때마다 중량이 K만큼 감소한다. 예를 들어 K=4일 때, 3일이 지나면 중량이 488로
www.acmicpc.net
코드
n,k = map(int,input().split())
n_list = list(map(int,input().split()))
visit = [False] * n
cnt = 0
ans = 0
def dfs(weight):
global cnt, ans
if weight < 500:
return
if cnt == n:
ans += 1
return
for i in range(n):
if visit[i] == False:
visit[i] = True
weight = weight - k + n_list[i]
cnt += 1
dfs(weight)
visit[i] = False
weight = weight + k - n_list[i]
cnt -= 1
dfs(500)
print(ans)
설명
visit 리스트를 이용하여 이미 사용한 운동 키트인지 확인했다.
중량이 500 아래로 내려가면 바로 return을 해서 weight값과 cnt 값을 이전으로 돌려놓고, visit도 False로 바꿔줬다. 만약 500 아래로 내려가지 않고 모든 운동 키트를 사용했다면 cnt 값을 1 증가시켰다.
반응형
'알고리즘 > 백트래킹' 카테고리의 다른 글
[백준][JAVA] 9742번 순열 (0) | 2023.03.15 |
---|---|
[백준][Python] 1759번 암호 만들기 (0) | 2022.12.02 |
[백준][Python] 10974번 모든 순열 (0) | 2022.08.04 |
[백준][Python] 1182번 부분수열의 합 (0) | 2022.08.03 |
[백준][Python] 15652번 N과 M (4) (0) | 2022.08.01 |
댓글