https://school.programmers.co.kr/learn/courses/30/lessons/135808
문제 접근
ㅡ 배열의 길이는 변경이 안되는 거 같아서 배열의 길이를 받는 변수 copyScoreLength 선언
ㅡ 사과 점수를 오름차순 정렬
ㅡ 사과 박스 만큼 돌아가는 반복문과 한 상자에 들어갈 사과 갯수만큼 돌아가는 반복문
ㅡ 사과 상자 배열 appleBox에 정렬된 사과 점수의 뒷부분부터 저장
ㅡ 한 상자가 만들어지면 마지막 값이 최솟값 → 최소값 * 사과 갯수를 answer에 저장
import java.util.*;
class Solution {
public int solution(int k, int m, int[] score) {
int answer = 0;
int makeBox = score.length / m; // 만들어질 박스 갯수
int copyScoreLength = score.length;
Arrays.sort(score);
for(int r=1; r<=makeBox; r++) {
int appleBox[] = new int[m];
for(int i=0; i<m; i++) {
appleBox[i] = score[copyScoreLength-1-i]; // applebox 첫 인덱스에 score 배열 마지막 수 부터 저장
}
copyScoreLength -= m;
answer += appleBox[appleBox.length-1] * m;
}
return answer;
}
}
풀이 후 더 간단하게 푼 다른 사람의 풀이도 참고하였다.
다른 풀이
class Solution {
public int solution(int k, int m, int[] score) {
int answer = 0;
Arrays.sort(score); // 점수 오름차순 정렬
for(int i=score.length; i >=m; i = i-m) { // 배열의 크기부터 시작해서 m씩 감소
answer +=score[i-m] * m; // 상자의 최저값 * 사과 갯수
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / 옹알이(2) / JAVA] (0) | 2023.01.27 |
---|---|
[프로그래머스 / 햄버거 만들기 / JAVA] (0) | 2023.01.24 |
[프로그래머스 / 명예의 전당 (1) / JAVA] (0) | 2023.01.13 |
[프로그래머스 / 문자열 나누기 / JAVA ] (0) | 2023.01.12 |
[프로그래머스 / 가장 가까운 같은 글자 / JAVA ] (0) | 2023.01.09 |
댓글