[프로그래머스/135808] 과일장수
in Study / Coding Test
☑️ 문제
☑️ 풀이
- 주어진 배열 score를 내림차순으로 정렬한 arr를 생성한다.
- 최대 이익을 얻을 수 있는 상자를 먼저 구하기 위해서 내림차순으로 정렬하였다.
인덱스 + 1
이 m의 배수인 경우,arr[인덱스] * m
을 하여 answer에 더한다.
//시간: 343.28ms
//메모리: 164MB
import java.util.*;
class Solution {
public int solution(int k, int m, int[] score) {
int answer = 0;
Integer[] arr = Arrays.stream(score).boxed().toArray(Integer[]::new);
Arrays.sort(arr, (a, b) -> b - a);
for (int i = 0; i < arr.length; i++) {
if ((i + 1) % m == 0 && i != 0) {
answer += arr[i] * m;
}
}
return answer;
}
}
☑️ 문법 정리 - 배열 정렬하기
Arrays.sort()
- 오름차순 정렬
int[] arr = new int[] {1, 2, 3, 1, 2, 3, 1};
Arrays.sort(arr); // [1, 1, 1, 2, 2, 3, 3]
- 내림차순 정렬
- 원시 타입(primitive type)은 정렬하지 못하기 때문에, Wrapper 클래스로 박싱해준 뒤, 정렬해주어야 한다.
int[] arr = new int[] {1, 2, 3, 1, 2, 3, 1};
Integer[] arr2 = Arrays.stream(arr).boxed().toArray(Integer[]::new);
- Collections.reverseOrder() 사용
Arrays.sort(arr2, Collections.reverseOrder());
- Comparator사용
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare (Integer a, Integer b) {
return b.compareTo(a);
}
});
- 람다식 사용
Arrays.sort(arr, (a, b) -> b - a);