소스 코드

# 매일 K 감소
# N개의 키트, 한 번씩만 사용 가능
# 어떤 시점에서도 500보다 작아지면 안 됨
# 항상 500 이상이 되는 경우의 수를 출력
def find(day,now):
global cnt
if day == n:
if board.count(0) == 0:
cnt += 1
return
for q in range(n):
if board[q] == 0:
if now - k + kit[q] >= 500:
board[q] = 1
find(day+1, now - k + kit[q])
board[q] = 0
return
n,k = map(int,input().split())
kit = list(map(int,input().split()))
kit.sort()
board = [0] * n
cnt = 0
find(0,500)
print(cnt)

 


해결 방법

1. 브루트포스, 모든 경우의 수 다 찾아서 확인하면 됨


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.