외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
emergency
의 길이 ≤ 10emergency
의 원소 ≤ 100function solution(emergency) {
let answer = Array(emergency.length).fill(0);
for (let i=1; i<=emergency.length; i++) {
let bigger = Math.max(...emergency);
let idx = emergency.indexOf(bigger);
answer[idx] = i;
emergency[idx] = 0;
}
return answer;
}
원본 배열에 손을 대고 싶지 않았지만... 지금은 이런 방법밖에 떠오르지 않았다.
짜잔 그러면 답이 나오긴 한답니다.
function solution(emergency) {
let sorted = emergency.slice().sort((a,b)=>b-a);
return emergency.map(v=>sorted.indexOf(v)+1);
}
indexOf를 쓸거면 굳이 나처럼 복잡하게 배열 만들고 할 필요가 없었잖아?!
sorted.indexOf(v)
를 사용하여 정렬된 배열 sorted에서 v의 인덱스를 찾는다. 배열은 0부터 인덱싱 되기 때문에 실제 값을 얻기 위해서는 +1을 해준다.내가 원래 추구하던 방향이 이거였는데... 너무 복잡하게 생각하지 말고 여러 함수들과 좀 친해져보자!
function solution(emergency) {
let sort = [...emergency].sort((a, b) => b - a);
return emergency.map(k => {
const queue = sort.findIndex(v => v === k);
return queue + 1
});
}
여기도 비슷함! 하지만 indexOf()가 아닌 findIndex()를 사용했다.