영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열 score가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요.
score result
[[80, 70], [90, 50], [40, 70], [50, 80]] [1, 2, 4, 3]
[[80, 70], [70, 80], [30, 50], [90, 100] [4, 4, 6, 2, 2, 1, 7]
, [100, 90], [100, 100], [10, 30]]
(원래 평균을 구한 후에 정렬해서 index를 이용해 구하고 싶었는데 indexOf 사용하는걸 생각하지 못하고 헤매다가 새로운 변수인 rank와 반복문을 이용해 구했다.)
function solution(score) {
let average = score.map(([e,m]) =>(e+m)/2);
let rank = Array(average.length).fill(1);
for(i=0;i<average.length;i++){
for(j=0;j<average.length;j++){
if(average[i] < average[j]) rank[i]++;
}
}
return rank;
}
정렬된 배열에서 평균값의 index를 찾아 1을 더해주면 된다.
function solution(score) {
let avg = score.map(v=>(v[0]+v[1])/2);
let sorted = avg.slice().sort((a,b)=>b-a);
return avg.map(v=>sorted.indexOf(v)+1);
}
map안에 filter를 써서 각 값들을 비교하였고, 평균이 더 큰 값의 개수를 구해 1을 더해서 등수를 구해주었다.
function solution(score) {
return score.map((el) => {
return (
score.filter((v) => (v[0] + v[1]) / 2 > (el[0] + el[1]) / 2).length + 1
);
});
}