문제
[과일장수]
풀이
코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Collections;
class Solution {
public int solution(int k, int m, int[] score) {
Arrays.sort(score);
ScoreCalculator scoreCalculator = new ScoreCalculator(k, m, score);
return scoreCalculator.calculateTotalScore();
}
}
class Scores {
private int[] score;
public Scores(int[] score){
this.score = score;
}
public int getMinScore(){
return score[0];
}
public int calculateGroupScore(int m){
return getMinScore() * m;
}
}
class ScoreCalculator {
private int k;
private int m;
private int[] sortedScores;
public ScoreCalculator(int k, int m, int[] score) {
this.k = k;
this.m = m;
this.sortedScores = score;
}
public int calculateTotalScore() {
int totalScore = 0;
for (int i = sortedScores.length; i >= 0; i -= m) {
int[] subArr = Arrays.copyOfRange(sortedScores, i, i + m);
Scores group = new Scores(subArr);
totalScore += group.calculateGroupScore(m);
}
return totalScore;
}
}
정리
- 뭔가 이런 문제만 보면 객체 지향을 도전하고 싶어서 최대한 객체 지향스럽게 풀어보았다... 이게 맞는 건지는 모르겠음
- score를 계산하는 클래스랑 score group을 나누는 클래스를 만들어 역할분리를 했음