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