Algorithm/Programmers

[JS 코딩테스트] Lv.0 진료순서 정하기

33e 2025. 5. 14. 13:33

문제 설명

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료순서를 정하려고 합니다.

정수배열 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