본문 바로가기

Java/코딩테스트

[프로그래머스/120885] 진료순서 정하기(Arrays.sort(), Arrays.binarySearch(), emergency.length - Arrays.binarySearch(sorted.emergency[i])

✏️ 문제 설명

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

 


✏️ code

📌 Arrays.sort(sorted)
: emergency를 복사해 sorted 배열을 만듭니다. 그리고 이를 sort하여 오름차순으로 정렬합니다.

📌 Arrays.binarySearch()
: 배열에서 요소가 위치하는 인덱스를 찾습니다.

📌 int rank = emergency.length - Arrays.binarySearch(sorted, emergency[i])
- emergency: [3, 76, 24] / sorted: [3, 24, 76]
- i가 0인 경우, rank = 3 - 0 = 2 → answer[0] = 3
- i가 1인 경우, rank = 3 - 2 = 1 → answer[1] = 1
- i가 2인 경우, rank = 3 - 1 = 2 → answer[2] = 2
import java.util.*;

class Solution {
    public int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];
        int[] sorted = emergency.clone();
        Arrays.sort(sorted);
        
        for (int i = 0; i < emergency.length; i++) {
            int rank = emergency.length - Arrays.binarySearch(sorted, emergency[i]);
            answer[i] = rank;
        }
        
        return answer;
    }
}
반응형