영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열 score
가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요.
0 ≤ score[0], score[1] ≤ 100
1 ≤ score의 길이 ≤ 10
function solution(score) {
var answer = Array(score.length).fill(1);
var lst = [];
// lst : 평균 계산 배열
for ([eng, math] of score) {
lst.push((eng + math) / 2)
}
// answer : 순위 담을 배열
for (let i =0; i<score.length; i++) {
for (let j=0; j<score.length; j++) {
// 값이 작으면 해당 값에 answer++
if (lst[i] < lst[j]) answer[i]++
}
}
return answer;
}
answer
은 [ 1, 1, 1, 1] 로 초기화lst
는 평균을 계산한 배열 담기answer
는 평균을 계산한 배열을 이중 for문 돌면서 값이 작으면 answer
에 +1 해주기function solution(score) {
// 1. score의 평균 점수를 구한다.
let avg = score.map(v=>(v[0]+v[1])/2);
// 2. avg를 내림차순으로 정렬한 배열 sort를 선언한다.
let sorted = avg.slice().sort((a,b)=>b-a);
// 3. avg의 요소와 동일한 sorted 배열의 index 값에 1을 더한다.
return avg.map(v => sorted.indexOf(v) + 1);
}
slice
는 avg
를 복사하기 위해 사용한다. 후에 avg
를 이용해서 sort
하기 때문에 avg
의 원본은 유지해두어야함!slice()
메서드를 사용하여 배열을 복사하는 것은 원래 배열의 순서를 보존하면서 새로운 배열을 생성하기 위한 방법slice
와 splice
를 정리해야겠다!!