본문 바로가기

프로그래머스(Java)/Level 0

[프로그래머스] 등수 매기기

728x90

코드 힌트

  1. 평균 점수 계산:
    • 각 학생의 평균 점수를 계산하려면, 학생의 각 과목 점수를 합산한 후, 과목 수로 나누어 평균을 구합니다.
    • 이를 위해 2중 for 루프를 사용하여 각 학생의 점수를 순회하고 평균을 계산합니다.
  2. 평균 점수를 정렬하여 순위 매기기:
    • 평균 점수를 저장한 배열을 List<Double>로 변환하여 정렬합니다.
    • Collections.sort와 Collections.reverseOrder를 사용하여 내림차순으로 정렬합니다.
  3. 순위 부여:
    • 정렬된 리스트에서 각 평균 점수의 인덱스를 찾고, 이 인덱스에 1을 더하여 순위를 매깁니다.
    • List.indexOf 메소드를 사용하여 평균 점수의 위치를 찾아 순위를 계산합니다.

 


정답은 더보기 클릭

더보기
import java.util.*;

class Solution {
    public int[] solution(int[][] score) {
        // 평균 점수를 저장할 배열을 Double 타입으로 선언합니다.
        Double[] avgScore = new Double[score.length];
        int n = score[0].length;    // 과목 수
        
        // 각 학생의 평균 점수를 계산합니다.
        for (int i = 0; i < score.length; i++) {
            int sum = 0;
            for (int j = 0; j < n; j++) {
                sum += score[i][j];  // 각 학생의 모든 과목 점수를 합산합니다.
            }
            avgScore[i] = sum * 1. / n; // 평균 점수를 계산합니다.
        }
        
        // 결과를 저장할 배열을 선언합니다.
        int[] result = new int[score.length];
        
        // 평균 점수를 List로 변환하여 내림차순으로 정렬합니다.
        List<Double> list = new ArrayList<>(Arrays.asList(avgScore));
        Collections.sort(list, Collections.reverseOrder());
        
        // 각 학생의 평균 점수를 기준으로 순위를 매깁니다.
        for (int i = 0; i < avgScore.length; i++) {
            result[i] = list.indexOf(avgScore[i]) + 1; // 순위를 1부터 시작하도록 조정합니다.
        }
        
        return result; // 순위를 포함한 결과 배열을 반환합니다.
    }
}
728x90