티스토리 뷰

function solution(score) {
    let answer = [];
    let avgArray = [];
    
    score.forEach( item => {
        item = (item[0] + item[1]) / 2;
        avgArray.push(item);
    })
    let sortArray = avgArray.slice().sort((a, b) => b - a);
    
    avgArray.forEach( rank => {
        answer.push(sortArray.indexOf(rank) + 1);
    })
    
    return answer;
}

영어점수와 수학점수를 합한 평균을 구하고, 평균을 새로운 배열에 넣어준 뒤 내림차순으로 정렬해주었다.

sort는 원본 배열이 변경되기 때문에 slice로 복사 후 새로운 배열로 만들어준 뒤 정렬할 수 있도록 했다.

그리고 내림차순으로 정렬된 sortArray의 인덱스 + 1 을 가져오면 순위를 얻을 수 있다고 생각해서 평균값이 들어있는 배열(avgArray)의 아이템들을 indexOf에 넣어주었다.

평균값의 배열을 만들고 내림차순 정렬까지는 어렵지 않았는데 순위를 가져오는 데서 생각처럼 되지 않았다.

평균 점수들을 sort된 배열 내 인덱스값에 넣어줄 생각을 못하고 계속 avgArray와 sortArray를 대조해서 비교하려는 생각에서 벗어나지 못해서 마지막에서 조금 헤맸었던 것 같다.

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크