💡 영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열
score
가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요.
입출력 예시
before | 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] |
function solution(score) {
const rank = new Array(score.length).fill(1);
const average = score.map((i) => (i[0] + i[1]) / 2);
for (let i = 0; i < average.length; i++) {
for (let j = 0; j < average.length; j++) {
if (average[j] > average[i]) rank[i]++;
}
}
return rank;
}
새로운 배열 rank를 생성, fill 함수 사용해서 모든 요소를 1로 초기화하고, map을 이용해 영어 점수와 수학 점수의 평균을 구함.
const rank = new Array(score.length).fill(1); // [1,1,1,1]
const average = score.map((i) => (i[0] + i[1]) / 2);
이중 반복문을 사용. 점수가 더 낮은 학생의 등수를 1씩 증가.
for (let i = 0; i < average.length; i++) {
for (let j = 0; j < average.length; j++) {
if (average[j] > average[i]) rank[i]++;
}
}
return rank;
avg 배열의 각 요소에 대해서 sorted 배열에서 몇번째인지 찾아서 반환.
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);
}