반응형
https://school.programmers.co.kr/learn/courses/30/lessons/135808
package Programmers;
import java.util.Arrays;
import java.util.Collections;
public class 과일장수 {
public static void main(String[] args){
과일장수 T = new 과일장수();
int k = 4; //과일점수 최대점수
int m= 3; //M개씩 포장
int[] score = {4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2};
T.solution(k, m, score);
}
public int solution(int k, int m, int[] score) {
int answer = 0;
//역정렬 해주기위해서 Integer로 감싼다.
Integer[] scoreBoxed = Arrays.stream(score).boxed().toArray(Integer[]::new);
Arrays.sort(scoreBoxed, Collections.reverseOrder());
for (int i = m; i <= scoreBoxed.length ; i+=m) {
int p = scoreBoxed[i-1];//scoreBoxed[i-1] 은 해당 박스에서 가장 작은 숫자가 된다.
answer += m * p;
}
return answer;
}
}
1. score 역정렬(내림차순)
2. socreBoxed 를 M개(포장해야되는 개수 만큼 증가시키면서 돈다)
ex.) m= 3 이면 i = 3, 6, 9, 12 이렇게 증가된다.
3. scoreBoxed[i-1] 은 해당박스에서 가장 작은 숫자 p 가된다.
4. m과 p를 곱해서 answer 에 더해준다.
※ 더 효율적인 코드는 Integer Boxing 없이 오름차순 정렬 하고, 뒤에서부터 내려오면 됨
반응형
'기타 > 알고리즘' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 롤케이크자르기 LV.2 java (1) | 2023.05.10 |
---|---|
[알고리즘] 프로그래머스 - 콜라문제 LV.1 JAVA (0) | 2023.05.10 |
[알고리즘] 프로그래머스 옹알이2 lv1 java (0) | 2023.05.08 |
[알고리즘] 프로그래머스 - 기사단원의무기 Lv.1 (java) (0) | 2023.05.08 |
[알고리즘] 프로그래머스 - 숫자카드나누기 Lv2 (Java) (0) | 2023.05.06 |