문제 설명
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료순서를 정하려고 합니다.
정수배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료순서를 정한 배열을 return하도록 solution 함수를 완성하세요.
제한사항
- 중복된 원소는 없습니다.
- 1≤ emergency의 길이 ≤ 10
- 1 ≤ emergency의 원소 ≤ 100
입출력 예
| emergency | result |
| [3,76,24] | [3,1,2] |
| [1,2,3,4,5,6,7] | [7,6,5,4,3,2,1] |
| [30,10,23,6,100] | [2,4,3,5,1] |
나의 풀이
function solution(emergency) {
//sort를 이용해 내림차순으로 정렬
let align = emergency.slice().sort((a,b)=>b-a)
let answer = [];
//반복문을 통해 answer에 emergency[i]와 같은 숫자의 인덱스를 align에서 찾아 넣음
for(let i = 0; i < emergency.length; i++){
answer[i] = align.indexOf(emergency[i]) + 1
}
return answer;
}
다른 사람의 풀이
function solution(emergency) {
let sorted = emergency.slice().sort((a,b)=>b-a);
return emergency.map(v=>sorted.indexOf(v)+1);
}
같은 아이디어지만 map을 이용해 더 간단하게 표현한 부분이 인상적이었다.
참고 자료https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
Array.prototype.indexOf() - JavaScript | MDN
Array 인스턴스의 indexOf() 메서드는 배열에서 주어진 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고, 찾을 수 없는 경우 -1을 반환합니다.
developer.mozilla.org