lv3. 최고의 집합
접근한 방법
문제 예시들을 보면 곱이 최대인 경우는 항상 0~s의 중간값이 가장 많은 집합의 곱이 가장 큰 값임을 알 수 있습니다. s가 짝수인 경우는 그대로 중간값들로 이루어진 배열을 리턴하면 되지만 홀수인 경우는 s를 n으로 나눈 나머지 횟수만큼 1씩 더해주어야 합니다.
문제 예시를 예로 들면 n = 2, s = 9일 경우 일단 원소가 s / n인 [4, 4]의 배열을 구성하고 s는 홀수이므로 나머지인 1회만큼 앞에서부터 원소를 1씩 더하면 [5, 4]가 되고 이 집합이 최고의 집합이 됩니다.
Python
def solution(n, s):
if not s // n:
return [-1]
arr = [s // n for _ in range(n)]
for i in range(s % n):
arr[i] += 1
return sorted(arr)
JavaScript
function solution(n, s) {
if (!parseInt(s / n)) return [-1]
const arr = Array(n).fill(parseInt(s / n))
for (let i = 0; i < s % n; i += 1) arr[i] += 1
arr.sort()
return arr
}