등수 매기기

난이도 중하
화낼거양's avatar
Mar 21, 2025
등수 매기기
Contents
정답
 
 

문제 설명

영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열 score가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 0 ≤ score[0], score[1] ≤ 100
  • 1 ≤ score의 길이 ≤ 10
  • score의 원소 길이는 2입니다.
  • score는 중복된 원소를 갖지 않습니다.

입출력 예

score
result
[[80, 70], [90, 50], [40, 70], [50, 80]]
[1, 2, 4, 3]
[[80, 70], [70, 80], [30, 50], [90, 100], [100, 90], [100, 100], [10, 30]]
[4, 4, 6, 2, 2, 1, 7]

입출력 예 설명

입출력 예 #1
  • 평균은 각각 75, 70, 55, 65 이므로 등수를 매겨 [1, 2, 4, 3]을 return합니다.
입출력 예 #2
  • 평균은 각각 75, 75, 40, 95, 95, 100, 20 이므로 [4, 4, 6, 2, 2, 1, 7] 을 return합니다.
  • 공동 2등이 두 명, 공동 4등이 2명 이므로 3등과 5등은 없습니다.
 
기본적으로 주어진 코드 :
class Solution { public int[] solution(int[][] score) { int[] answer = {}; return answer; } }
 
 

정답

 
import java.util.ArrayList; import java.util.List; class Solution { public int[] solution(int[][] score) { int[] answer = new int[score.length]; List<Double> list = new ArrayList<>(); for (int i = 0; i < score.length; i++) { list.add(((score[i][0] + score[i][1]) / 2.0)); } for (int i = 0; i < answer.length; i++) { int count = 1; Double target = list.get(i); for (int j = 0; j < list.size(); j++) { if (j != i && list.get(j) > target) { count++; } } answer[i] = count; } return answer; } }
 
  • 평균 점수 계산:
    • score 배열의 각 학생의 점수(2차원 배열)를 읽고, 각 학생의 평균 점수를 list에 추가합니다.
    • for (int i = 0; i < score.length; i++) { list.add(((score[i][0] + score[i][1]) / 2.0)); }
  • 순위 계산:
    • 각 학생의 평균 점수를 기준으로 순위를 매깁니다.
    • 첫 번째 반복문에서는 각 학생의 평균 점수를 가져와 target으로 설정하고, 두 번째 반복문에서는 다른 학생들의 평균 점수와 비교합니다.
    • 다른 학생들의 평균 점수가 target보다 높으면 count를 증가시킵니다.
    • for (int i = 0; i < answer.length; i++) { int count = 1; Double target = list.get(i); for (int j = 0; j < list.size(); j++) { if (j != i && list.get(j) > target) { count++; } } answer[i] = count; }
Share article

moohyun