문제
https://school.programmers.co.kr/learn/courses/30/lessons/12938#
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 개요
주어진 자연수의 개수 n과 합 를 만족하는 집합 중, 각 원소의 곱이 최대가 되는 집합을 구하는 문제입니다. 만약 해당 조건을 만족하는 집합이 없다면 [−1]을 반환합니다.
접근 방법
- 조건 확인
- 인 경우, 합 를 만들 수 없으므로 [−1]을 반환합니다.
- 최적의 분배 계산
- 합 를 개의 원소로 최대한 고르게 나누는 것이 곱을 최대화하는 방법입니다.
- 각 원소에 을 할당합니다.
- s%n의 나머지 값은 각 원소에 하나씩 분배하여 고르게 분포되도록 합니다.
- 합 를 개의 원소로 최대한 고르게 나누는 것이 곱을 최대화하는 방법입니다.
- 결과 생성
- 나눗셈의 몫으로 초기화된 배열에서, 나머지 개수만큼 앞에서부터 1씩 더합니다.
- 최종적으로 배열을 오름차순으로 정렬하여 반환합니다.
코드
import java.util.*;
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;
for (int i = 0; i < s%n; i++) answer[i]++;
Arrays.sort(answer);
return answer;
}
}
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 불량 사용자 - Java (1) | 2024.12.02 |
---|---|
[프로그래머스] 단속카메라 - Java (0) | 2024.12.02 |
[프로그래머스] 정수 삼각형 - Java (0) | 2024.12.01 |
[프로그래머스] 무인도 여행 - Java (0) | 2024.11.30 |
[프로그래머스] 미로 탈출 - Java (0) | 2024.11.30 |