class Solution {
public int[] solution(int n, int s) {
int[] answer = new int[n];
if (n > s) {
return new int[] {-1};
}
for (int i=0;i<n;i++) {
answer[i] = s/n;
}
if (s%n!=0) {
int num = answer.length-1;
for (int i=0; i<s%n ;i++) {
answer[num] = answer[num]+1;
num--;
}
}
return answer;
}
}
낮은 숫자로 n과 s를 낮게 설정해서 케이스들을 살펴보니 결국 s/n으로 나눈값과 가까울 때에 가장 큰 값을 보여준다.
이것을 이용하면 된다.
- 배열에 중앙값(s/n)값을 나눠주는데 이때 s%n값들이 남는다.
- s%n값들을 1씩 뒤에서부터 더해준다.
- 이후 반환하면 끝
레벨3 치고는 쉬운 문제였다.
출처: 프로그래머스 알고리즘 https://school.programmers.co.kr/learn/courses/30/lessons/12938