728x90
링크 : www.acmicpc.net/problem/18429
푸는 방법
1. N일동안 A개의 운동을 선택해서 진행하므로, itertools를 이용해 순열을 생성합니다.
그리고, 이 경우가 할수 있는 운동의 최대 개수입니다.
2. N일동안 운동하는 중에, 근손실이 발생하면 안되므로 매일마다 운동량이 0보다 작아지는지 확인하고
만약 작아진다면 최대 개수에서 1개씩 뺍니다.
3. 전체 가능한 운동 개수에서 근손실이 발생한 경우를 뺀 나머지를 출력합니다.
코드
import itertools
N, K = map(int, input().split())
A = list(map(int, input().split()))
cases = list(itertools.permutations(A, N))
count = len(cases)
for case in cases:
weights=0
for i in range(N):
weights+=(case[i]-K)
if weights<0:
count-=1
break
print(count)
728x90
'Programming Language > 알고리즘 공부' 카테고리의 다른 글
[백준] 19621 회의실 배정 2 파이썬 (0) | 2021.04.04 |
---|---|
[백준] 14502 연구소 파이썬 (0) | 2021.03.29 |
[백준] 2231 분해합 파이썬 (0) | 2021.03.29 |
[백준] 14888 연산자 끼워넣기 파이썬 (0) | 2021.03.29 |
[백준] 3085 사탕게임 파이썬 (0) | 2021.03.29 |