[프로그래머스] 등수 매기기.JS

ungnam·2023년 6월 8일

programmers level0

목록 보기
24/29
post-thumbnail

https://school.programmers.co.kr/learn/courses/30/lessons/120882

나의 풀이

function solution(score) {
    const avgs = score.map((v) => (v[0] + v[1]) / 2);
    
    return avgs.map((avg, i, arr) => {
        let rank = 1;
        arr.forEach((v) => {
            if (avg < v) rank++;
        })
        return rank;
    })    
}

✔ 최초 순위를 1로 설정해 전체 평균값을 돌면서 현재 평균값보다 높은 값을 발견할 때마다 순위를1씩 증가 -> 공동 순위도 표현 가능

참고할 만한 풀이

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);
}

✔ 평균에 대해 내림차순 정렬 -> sorted의 인덱스 + 1은 곧 순위를 의미하므로 avg 내 요소를 돌면서 sorted에서 그 요소의 값에 해당하는 인덱스를 찾는다.

profile
꾸준함을 잃지 말자.

0개의 댓글