Python/Coding Test
1421 나무꾼 이다솜
하효닝
2022. 2. 23. 19:28
문제
https://www.acmicpc.net/problem/1421
1421번: 나무꾼 이다솜
첫째 줄에 이다솜이 가지고 있는 나무의 개수 N과 나무를 자를 때 드는 비용 C와 나무 한 단위의 가격 W이 주어진다. 둘째 줄부터 총 N개의 줄에 이다솜이 가지고 잇는 나무의 길이가 한 줄에 하나
www.acmicpc.net
접근
- 나무의 개수가 50보다 작고 자를 수 있는 나무 길이가 10000보다 작으므로, 자를 수 있는 모든 길이에 대해 벌 수 있는 돈을 계산해서 최댓값을 구했다.
- 주의할 점은 가지고 있는 나무를 전부 잘라서 팔아야하는 것은 아니므로, 해당 나무를 팔았을 때 얻는 비용과 자를 때 드는 비용의 차가 양수일때만 나무를 판다.
풀이
n, c, w = map(int, input().split())
a = [int(input()) for _ in range(n)]
ans = 0
for i in range(1, 10001):
tmp = 0
for x in a:
cost = 0
m, d = divmod(x, i)
if d == 0:
cost += (m - 1) * c
else:
cost += m * c
if m * w * i - cost > 0:
tmp += m * w * i - cost
ans = max(ans, tmp)
print(ans)