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)