Programming/백준
[실버 2] 백준 1500 - 최대 곱 (파이썬)
pental
2025. 5. 18. 12:29

https://www.acmicpc.net/problem/1500
풀이
곱의 최댓값을 구하려면, 수들을 가능한 한 고르게 나누는 것이 유리하다.
- 예: S = 10, K = 3일 때 → 3, 3, 4 (곱: 36)
- 2, 2, 6은 합은 같지만 곱이 작다 (24)
정수 S를 K로 나눈 몫(q)과 나머지(r) 를 활용하면 된다.
q, r = divmod(S, K)
S = q * K + r
nums = [q + 1] * r + [q] * (K - r)
r개의 항에는 (q+1), 나머지는 q
- r개의 수는 (q + 1)
- 나머지 (K - r)개의 수는 q
- 이 수들을 곱하면 최댓값
result = 1
for num in nums:
result *= num
print(result)
코드
# 백준 1500 - 최대 곱
# 분류 : 수학
S, K = map(int, input().split())
q, r = divmod(S, K)
nums = [q + 1] * r + [q] * (K - r)
result = 1
for num in nums :
result *= num
print(result)