문제 풀이/프로그래머스

프로그래머스 lv0 진료순서정하기

춘핑이 2023. 2. 24. 18:02

문제

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

코드

public static int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];

        int[] arr = Arrays.copyOf(emergency, emergency.length);

        Arrays.sort(emergency);

        for (int i = 0; i < answer.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if(arr[i] == emergency[j]) {
                    answer[i] = emergency.length - j;
                }
            }
        }
        return answer;
    }

풀이

기존 배열을 복사하여 비교할 배열을 만들었다.
기존의 배열은 오름차순 정렬을해서 중요의 역순으로 배치하였다.
배열이 3개라고할때
오름차순(중요도 )1 2 3
원래 위치 중요도 순서 3 1 2
j len-3 len-2 len-1 인덱스 위치
// 3: j0 = len-3 -> 3 = len - j0
// 1: j2 = len-1 -> 1 = len - j2
// 2: j1 = len-2 -> 2 = len - j1