⌨️ 프로그래머스/코딩테스트 입문

[Programmers] 진료순서 정하기 🏥 | JS

하나둘세현 2024. 6. 3. 21:48
728x90

문제

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

해결 과정

제대로 풀리지 않아 구글링을 통해서 풀었다. for문 내부의 코드를 이해하는데 시간이 꽤 걸렸다.

emergencyCopy를 선언한 이유는 emergency를 내림차순으로 만든뒤 변수를 복사하기 위해서 이다. 

answer에는 값들을 저장하기 위해 빈 배열로 만들었다.

 

for문을 상용해 emergency의 길이만큼 반복했을때 이제 answer에 push를 하는 것이다.

emergency[i]+1을 한 이유는 배열은 0부터 시작하기에 1을 더한다. 

그리고 이제 그와 관련된 숫자가 나오면 인덱스를 적혀지는 방식이다. 

새롭게 알게된 점📝

indexOf에 관한 설명이다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

 

Array.prototype.indexOf() - JavaScript | MDN

Array 인스턴스의 indexOf() 메서드는 배열에서 주어진 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고, 찾을 수 없는 경우 -1을 반환합니다.

developer.mozilla.org

 

정답

function solution(emergency) {
  // 배열을 내림차순으로 정렬
  let emergencyCopy = [...emergency].sort((a, b) => b - a);
  let answer = []; // 결과를 저장할 빈 배열

  for (let i = 0; i < emergency.length; i++) {
    // 정렬된 배열에서 각 요소의 인덱스를 찾아 1을 더한 후 answer에 배열 추가
    answer.push(emergencyCopy.indexOf(emergency[i]) + 1);
  }
  return answer;
}

 

https://school.programmers.co.kr/learn/courses/30/lessons/120835

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

728x90