Problem Solving/BOJ

[BOJ] 1500: 최대 곱 Solution

happykoa 2020. 3. 2. 19:59

문제 소개

 

2020.03.02 기준,  실버 1티어 문제입니다.

 

엄청 엄청 간단한 문제입니다.

(굳이 Solution을 올려야 하나 싶지만, 문제를 풀면 다 올리려고 하고 있어서 올리게 되었습니다.)

 

먼저, 문제를 풀 수 있는 아이디어부터 설명하고

코드를 설명하겠습니다.

 

 

문제 링크

https://www.acmicpc.net/problem/1500

 

1500번: 최대 곱

세준이는 정수 S와 K가 주어졌을 때, 합이 S인 K개의 양의 정수를 찾으려고 한다. 만약 여러개일 경우 그 곱을 가능한 최대로 하려고 한다. 가능한 최대의 곱을 출력한다. 만약 S=10, K=3이면, 3,3,4는 곱이 36으로 최대이다.

www.acmicpc.net

아이디어

문제에서 주어진 S와 K 표기를 그대로 가져와 설명하겠습니다.

합이 S인 K개의 자연수의 최대 곱을 만들기 위해서는 K개의 자연수가 최대한 균등하게 나뉘어야 합니다.

따라서 S와 K가 10, 3이면 3 3 4로 나뉘는 것이죠.

 

아래는 이 아이디어를 그대로 반영한 코드입니다.

코드

# 입력
S,K = map(int,input().split())
# 분배할 숫자를 저장할 리스트
L = [0]*K
# N//K 만큼을 분배함.
for i in range(K):
    L[i] += S//K
# N%K, N//K 결과의 나머지를 균등하게 분배함.
for i in range(S%K):
    L[i] +=1
# 리스트안에 모든 값을 곱함.
ret =1
for i in range(K):
    ret*=L[i]
print(ret)

 

 

추가로 설명할 게 없을 것 같습니다.

Rmx

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ] 17404: RGB거리 2  (0) 2020.03.27
[BOJ] 1527: 금민수의 개수  (0) 2020.03.22
[BOJ] 2830: 행성 X3 Solution  (0) 2020.03.02
[BOJ] 1334: 다음 팰린드롬 수 Solution  (0) 2020.03.01
[BOJ] 1024: 수열의 합 Solution  (0) 2020.03.01