(문제 설명)
(제한 사항)
일단 works를 정렬해주고, 가장 큰 값인 works.length-1 인덱스부터 -1씩 해준다. (귀찮아서 내림차순으로 안했ㄷ..)
works.length-1과 works.length-2 비교해서 인덱스 값과 -1되는 값을 결정해줬다.
public static void main(String[] args) {
int[] works = {4,3,3};
int n = 4;
Arrays.sort(works);
if(works.length != 1) {
int k = works.length-1;
while(n != 0) {
if(works[k-1] < works[k]) {
works[k] -= 1;
k = works.length-1;
}
else if(works[k-1] == works[k]) {
if(k-1 == 0) {
works[k-1] -= 1;
k = works.length-1;
}else {
works[k] -= 1;
k--;
}
}else {
works[k-1] -= 1;
k = works.length;
}
n--;
}
}
else works[0] = works[0] - n;
long min = 0;
for(int i=0; i<works.length; i++) {
if(works[i] < 0) System.out.println("0"); // 코드 제출할 땐 return 0 해줌.
min += Math.pow(works[i], 2);
}
System.out.println(min);
}
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 카카오프렌즈 컬러링북 (0) | 2022.04.06 |
---|---|
[JAVA] 프로그래머스 - 오픈채팅방 (시간복잡도 빅오 O(n)) (0) | 2022.03.30 |
[JAVA] 프로그래머스 - 가장 긴 팰린드롬 (0) | 2021.02.16 |
[JAVA] 프로그래머스 - 여행경로 (0) | 2021.02.07 |
[JAVA] 프로그래머스 - 디스크 컨트롤러 (0) | 2021.02.02 |
댓글