반응형
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/12938?language=java
풀이 코드
package seohae.algorithm.level3;
import java.util.Arrays;
/**
* https://programmers.co.kr/learn/courses/30/lessons/12938
*/
public class Lesson_051_12938 {
public static void main(String[] args) {
Lesson_051_12938 lesson = new Lesson_051_12938();
System.out.println(Arrays.toString(lesson.solution(4, 13)));
}
public int[] solution(int n, int s) {
/**
* 문제 이해: n개의 숫자 간의 차이가 작을수록 최고의 집합이다.
* 예시) n=4, s=13일 경우
* 1. 몫 : 13/4 = 3
* 2. 나머지 : 1
*
* [3, 3, 3, 4]
* 나머지 (1) 횟수만큼 3 + 1 insert
* 그 외 몫을 insert
*/
int Q = s / n; /* 1. 몫 */
int R = s % n; /* 2. 나머지 */
int[] answer = {};
if (Q == 0) { /* 덧셈을 만들 수 없음 */
answer = new int[1];
answer[0] = -1;
return answer;
} else {
answer = new int[n];
}
/* answer 배열 insert 시작 */
for (int i = 0; i < n; i++) {
if (R > 0) { /* 나머지가 0보다 클 경우 */
if (i < n - R) { /* n - R 보다 작을 경우에 몫을 insert */
answer[i] = Q;
} else { /* R 만큼 Q + 1 값이 insert 된다 */
answer[i] = Q + 1;
}
} else { /* 나머지가 0보다 크지 않을땐 나누어떨어졌다는 이야기이므로, 몫만 insert */
answer[i] = Q;
}
}
return answer;
}
}
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[Baekjoon 15658번] 연산자 끼워넣기(2) 문제 (with 자바) (0) | 2021.10.01 |
---|---|
[Baekjoon 14888번] 연산자 끼워넣기 문제 (with 자바) (0) | 2021.10.01 |
[프로그래머스] Level2 _43165번: 타겟 넘버 (JAVA) (0) | 2021.09.29 |
[Baekjoon 14225번] 부분수열의 합 문제 (with 자바) (0) | 2021.09.28 |
[Baekjoon 1182번] 부분수열의 합 문제 (with 자바) (0) | 2021.09.26 |