문제 설명
- 영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 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] |
나만의 풀이
우선 풀이부터 말하면 기존의 주어진 배열을 map(([a, b]) => a+b) 형태로 배열 안의 배열들을 각 숫자들을 합한 평균 배열(avgArr으로 말하겠음.)을 만들고 그 후 [... ]를 이용해 배열을 새롭게 선언한 후 sort()를 이용해 내림차순(avgArrSort로 말하겠음.)으로 정렬했다.
그 후 map()의 첫 번째 매개변수는 배열의 원소(e), 두 번째 매개변수는 index 값(i)을 이용해
avgArr[i] = avgArrSort.indexOf(e) +1을 사용해서 숫자가 큰 순서대로 순위를 넣어줬다.
이 문제는 고민을 많이 하고 공문서 참고도 많이 했다. 우선 아직 map()와 sort()의 지식이 부족해 공부서를 보고 공부를 했다 ㅜㅜ 다들 사용하고 나면 공부서를 꼭 읽고 공부해보는 것을 추천합니다!!
function solution(score) {
let avgArr= score.map(([a, b]) => a+b);
const avgArrSort = [...avgArr].sort((a, b) => b-a);
return avgArr.map((e, i) => avgArr[i] = avgArrSort.indexOf(e) +1);
}
'프로그래머스 JS LV0' 카테고리의 다른 글
LV0 80 특이한 정렬 (0) | 2022.11.16 |
---|---|
LV0 79 치킨 쿠폰 (0) | 2022.11.14 |
LV0 77 로그인 성공? (0) | 2022.11.11 |
LV0 76 삼각형의 완성조건(2) (0) | 2022.11.11 |
LV0 75 컨트롤 제트 (0) | 2022.11.10 |