반응형
https://school.programmers.co.kr/learn/courses/30/lessons/135808
제한사항
3 ≤ k ≤ 9
3 ≤ m ≤ 10
7 ≤ score의 길이 ≤ 1,000,000
1 ≤ score[i] ≤ k
이익이 발생하지 않는 경우에는 0을 return 해주세요
Key Point : score의 길이 10^6, 최대 이익
입력 길이가 10^6이므로 이중 for문은 지양하고, 최대 이익을 구하는 것은 정렬을 하는 게 효율적이라고 생각.
-> Arrays.sort()
import java.util.*;
class Solution {
public int solution(int k, int m, int[] score) {
Arrays.sort(score);
int answer = 0;
int repeat = score.length / m;
int rest = score.length % m;
// m개로 안 나뉘는 경우
if(score.length % m != 0) {
for(int i = 0; i < repeat; i++) {
answer += m*score[(i*m) + rest];
}
}
// m개로 나뉘는 경우
else {
for(int i = 0; i < repeat; i++) {
answer += m*score[i*m];
}
}
return answer;
}
}
+ 여담으로,
k가 만약 최대 점수를 나타내는 문제였다면, score의 인덱스를 나타내주는 i*m을 적절하게 변경하면 풀 수 있다.
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[알고리즘 - 프로그래머스] 푸드 파이트 대회 (1) | 2024.04.03 |
---|---|
[알고리즘 - 프로그래머스] 햄버거 만들기 Java (0) | 2024.04.01 |
[알고리즘 - 프로그래머스] 기사단원의 무기 Jav (0) | 2024.03.28 |
[알고리즘 - 프로그래머스 고득점 Kit] 기능개발 Java (1) | 2024.03.14 |
[알고리즘 - 프로그래머스] [PCCE 기출문제] 9번 / 이웃한 칸 (1) | 2024.03.05 |