기타/코딩테스트

(코테) 프로그래머스_최고의 집합 *정렬

불광동 물주먹 2025. 9. 10. 16:49

 

 

 

 

class Solution {    
    public int[] solution(int n, int s) {
        int[] answer = new int[n];
        
        // 자연수 n개 
        // 합이 = s
        // 원소의 곱 = 최대 max
        // 자연수 
        //오름차순
        //  800/4    s/n
        // 800/    13/4
        // 200 200 200 200
        
        
        //예외 처리1 자연수 갯수보다 합이 더 작으면 -1 반환
        if(n>s) return new int[]{-1};
        
        int result = 0;
        
        //반복으로 각 집합별 최적의 값 세팅
        while(true){            
           if(n>s || s==0) break;                                    
            result += s/n;         
            s=s%n;
        } 
        
        // 배열에 최적값 세팅 + 나머지 값들에 +1
        for(int i=0;i<n;i++){                        
            //나머지수 만큼 뒷배열에 +1 시켜줌
            if(s!=0 && i>n-s-1){
                answer[i] = result+1;
                continue;
            }            
            answer[i] = result;                                        
        }

        
        return answer;
    }
}