프로그래머스 Lv3 최고의 집합

Android Chen·2021년 12월 10일
0

문제설명

풀이방법

  • 이게왜 레벨3인지 모르겠지만 곱한값이 최대가 되려면 구성한 값이 최대한 중간값에 가까운 값으로 구성해야 한다는 생각에 s/n을 하고 이 값을 첫번째 값으로 하고, 이값을 뺀 남은 값 중 남은 배열의 크기로 다시 나눈다. 위 과정을 반복하면 따로 정렬할 필요도 없이 정렬된 상태로 답을 구할 수 있다.

코드

import java.util.*;
class Solution {
    public int[] solution(int n, int s) {
        int[] ans = new int[n];
        if(n>s){
            return new int[]{-1};
        }
        int idx = 0;
        while(s>0){
            ans[idx++] = s/n;
            s -= s/n;
            n--;
        }
        return ans;
    }
}
profile
https://github.com/Userz1-redd

0개의 댓글