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

재오·2023년 3월 25일
1

JavaScript

목록 보기
22/48
post-thumbnail

🗒️ 문제

영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열 score가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담는 배열을 return하도록 solution 함수를 완성해주세요.

⚠ 제한사항

0 <= score[0], score[1] <= 100
1 <= score의 길이 <= 10
score의 원소 길이는 2입니다.
score는 중복된 원소를 갖지 않습니다.

📝 문제 해설

등수를 매기는 알고리즘에서는 이 풀이를 많이 사용한다. 먼저 map함수를 이용해 평균을 구하고 그 값을 새로운 배열에 집어 넣어준다. 새로운 배열이 존재하고 그 값을 내림차순으로 한번 더 정렬하는 배열을 만들어준다. 여기서 중요한 것은 slice()를 한번 써주는 것이다. slice()는 기존 배열을 변경하지 않고 새로운 배열을 만들어준다. 그렇게 내림차순으로 정렬된 배열의 위치를 새로운 배열로 저장해서 출력해주면 된다.

💡 필요 문법

map()

기존 배열을 변경해준다. for 반복문과 비슷하다.

slice()

얇은 복사를 가능하게 해준다. 기존의 배열을 변경하지 않는다.

indexOf()

매개변수로 들어가있는 문자열의 위치가 어디인지 알려준다.

💻 코드

function solution(score) {
    let average = score.map(v => (v[0] + v[1])/2);
    let sorted = average.slice().sort((a,b) => b-a);
    return average.map(v => sorted.indexOf(v)+1);
}
profile
블로그 이전했습니다

0개의 댓글