프로그램머스 - 최고의 집합

greenTea·2023년 2월 26일
0

알고리즘

목록 보기
4/4
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으로 나눈값과 가까울 때에 가장 큰 값을 보여준다.
이것을 이용하면 된다.

  1. 배열에 중앙값(s/n)값을 나눠주는데 이때 s%n값들이 남는다.
  2. s%n값들을 1씩 뒤에서부터 더해준다.
  3. 이후 반환하면 끝

레벨3 치고는 쉬운 문제였다.

출처: 프로그래머스 알고리즘 https://school.programmers.co.kr/learn/courses/30/lessons/12938

profile
greenTea입니다.

0개의 댓글