Algorithm
[JavaScript] 등수 매기기
황대성
2024. 8. 1. 18:11
문제 설명
영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 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] |
풀이
function solution(score) {
let avgArray = [];
for(let i = 0; i < score.length; i++){
const [a,b] = score[i]
avgArray.push((a + b)/2)
}
let sorted = [...avgArray].sort((a,b)=>b-a)
return avgArray.map((v)=> sorted.indexOf(v) + 1)
}
풀이 설명
1. for문으로 score의 요소를 돌면서 avgArray 배열에 for문 안에서 계산한 평균값을 push() 해준다.
2. 순위를 매기기 위해서 avgArray를 정렬해주는데 원본의 배열과 비교하기 위해 얕은 복사를 진행해서 정렬 한다.
3. map()을 통해 새로운 배열을 리턴하는데 정렬한 sorted의 indexOf()를 통해 순위를 매긴 뒤 값을 리턴한다. (index는 0부터 시작이므로 +1을 해준다.)