[프로그래머스 | Javascript] 진료 순서 정하기 힌트 및 문제풀이

·2023년 2월 22일
1

프로그래머스

목록 보기
1/1
post-thumbnail

문제

프로그래머스 문제 바로가기

문제 설명

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 중복된 원소는 없습니다.
  • 1 ≤ emergency의 길이 ≤ 10
  • 1 ≤ emergency의 원소 ≤ 100

입출력 예

emergencyresult
[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]

입출력 예 설명

입출력 예 #1

  • emergency가 [3, 76, 24]이므로 응급도의 크기 순서대로 번호를 매긴 [3, 1, 2]를 return합니다.

입출력 예 #2

  • emergency가 [1, 2, 3, 4, 5, 6, 7]이므로 응급도의 크기 순서대로 번호를 매긴 [7, 6, 5, 4, 3, 2, 1]를 return합니다.

입출력 예 #3

  • emergency가 [30, 10, 23, 6, 100]이므로 응급도의 크기 순서대로 번호를 매긴 [2, 4, 3, 5, 1]를 return합니다.

힌트

Hint1: emergency 배열의 응급도 순서대로 나열 한 뒤 인덱스 값을 활용하여 기존 배열에 저장된 값을 바꿔봅니다.

HInt2: sort(), map(), indexOf(), 스프레드연산자를 사용해 봅니다.


문제풀이

  1. emergency 배열의 값을 응급도 크기 순으로 sort()하여 새로운 sorted배열을 만듭니다.

  2. emergency 배열을num (현재 값) 인자를 받는 map()으로 순회하며 기존 sorted 배열에서 indexOf()num의 값이 위치한 순서를 찾습니다.

  3. 위에서 찾은 sorted 배열의 num 의 인덱스 값에 1을 더한 값을 emergency의 현재 num으로 변경합니다.

*주의할 점 : sort()메서드를 사용하면 기존 배열 자체를 변경하기 때문에 스프레드연산자로 배열을 새롭게 풀어 새로운 배열에 저장해야합니다.

function solution(emergency) {
    var sorted= [...emergency].sort((a,b)=>b-a)
    return emergency.map((num)=> num=sorted.indexOf(num)+1);
}
profile
직접 부딪치며 체화한 것을 기록하고자 합니다⭐️

0개의 댓글

관련 채용 정보