문제 소개
2020.03.02 기준, 실버 1티어 문제입니다.
엄청 엄청 간단한 문제입니다.
(굳이 Solution을 올려야 하나 싶지만, 문제를 풀면 다 올리려고 하고 있어서 올리게 되었습니다.)
먼저, 문제를 풀 수 있는 아이디어부터 설명하고
코드를 설명하겠습니다.
문제 링크
https://www.acmicpc.net/problem/1500
아이디어
문제에서 주어진 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 |