소스 코드

# 매일 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. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

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

 

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