코딩테스트

[코딩테스트 입문] 진료 순서 정하기 ★

summ.n 2025. 4. 23. 16:59

🔸 문제 설명

응급실에서는 응급도가 높은 환자부터 먼저 진료해야 해요.
정수 배열 emergency가 주어졌을 때,
각 환자의 진료 순위(응급도 높은 순)를 배열로 반환하는 문제입니다.

 

🔸 입출력 예

emergency 결과
[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]

 

🔍 문제 접근 방법

각 숫자가 전체 중 몇 번째로 큰 값인지를 판단하면 된다!

 

🔸 정답코드

import java.util.Arrays;

class Solution {
    public int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];
        int[] copy = Arrays.copyOf(emergency, emergency.length);
        Arrays.sort(copy); // 오름차순 정렬

        for (int i = 0; i < emergency.length; i++) {
            for (int j = 0; j < copy.length; j++) {
                if (emergency[i] == copy[j]) {
                    answer[i] = copy.length - j; // 높은 값일수록 앞 순위
                    break;
                }
            }
        }

        return answer;
    }
}

 

 

💡 핵심 개념 요약

개념 설명
Arrays.copyOf() 원본 배열을 복사해 보존하기
Arrays.sort() 정렬 (오름차순)
copy.length - j 순위 계산: 뒤에서부터 몇 번째인지

 

💭 느낀 점

순위 계산을 copy.length - j로 하는 것도 신기하고 재미있었다