문제 링크
link 📃
문제 풀이
- s를 n만큼 최대한 일정하게 나누었을때가 곱했을 때 가장 큰 값이 됩니다.
- 따라서 s / n을 하여 몫을 구하고 몫이 s개 만큼 있는 배열을 만듭니다.
- 그리고 나머지를 1씩 차례대로 더해줍니다.
- 그리고 sort를 해주어 작은수가 앞에 나오게 합니다.
다른풀이 탐색
- python에서 divmod를 사용하면 몫과 나머지를 바로 구할 수 있습니다.
- js에서 Array().fill()을 쓰면 편하게 변수를 원하는 만큼 배열에 넣을 수 있습니다.
해결 코드
Python
def solution(n, s):
answer = [s//n] * n
rem = s%n
for i in range(rem):
answer[i] +=1
answer.sort()
if answer[0] == 0:
return [-1]
else:
return answer
javascript
function solution(n, s) {
let answer = [];
const quo = Math.floor(s/n);
const rem = Number(s%n);
for(let i = 0; i < n ; i++){
answer.push(quo);
}
for(let i = 0 ; i < rem ; i ++){
answer[i] += 1;
}
answer.sort();
if(answer[0] == 0){
return [-1];
}else{
return answer;
}
}