영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 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], [100, 90], [100, 100], [10, 30]] | [4, 4, 6, 2, 2, 1, 7] |
입출력 예 #1
입출력 예 #2
score를 평균값으로 계산한 배열을 변수에 저장하고, 평균값을 얕은 복사를 통해 내림차순으로 정렬한다.
이중 for문을 돌려 평균 값으로 저장된 원소와 정렬된 값으로 저장된 원소를 비교해서 일치하면 answer 배열에 정렬된 값의 index+1의 값을 넣고 다음 값을 비교하기 위해 break; 한다.
answer을 return 한다.
function solution(score) {
const answer = [];
const average = score.map((arr) => (arr[0] + arr[1]) / 2);
const sorted = [...average].sort((a, b) => b - a);
for(let i=0; i<average.length; i++) {
for(let j=0; j<sorted.length; j++) {
if(average[i] === sorted[j]) {
answer.push(j+1);
break;
}
}
}
return answer;
}
score를 평균값으로 계산한 배열을 변수에 저장하고, 평균값을 얕은 복사를 통해 내림차순으로 정렬한다.
평균 값의 원소를 sorted.indexOf()에 넣어 정렬한 원소에서 같은 값일 때 index를 찾고 기존 원소 값에서 index+1의 원소로 바꾼 값을 return 한다.
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);
}