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

[프로그래머스 LV.0] 진료 순서 정하기

sundori 2024. 12. 10. 16:30

목차

     

    문제 설명

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


    제한사항

    • 중복된 원소는 없습니다.
    • 1 ≤ emergency의 길이 ≤ 10
    • 1 ≤ emergency의 원소 ≤ 100
        import java.util.Arrays;
    
    class Solution {
        public int[] solution(int[] emergency) {
            // 원본 배열의 복사본 생성
            int[] sortedEmergency = emergency.clone();
            // 내림차순 정렬
            Arrays.sort(sortedEmergency);
            
            // 내림차순으로 정렬하기 위해 뒤집는다.
            for (int i = 0; i < sortedEmergency.length / 2; i++) {
                int temp = sortedEmergency[i];
                sortedEmergency[i] = sortedEmergency[sortedEmergency.length - 1 - i];
                sortedEmergency[sortedEmergency.length - 1 - i] = temp;
            }
            
            // 진료 순서를 저장할 배열
            int[] answer = new int[emergency.length];
            
            // 원본 배열의 각 요소에 대해 순서 매기기
            for (int i = 0; i < emergency.length; i++) {
                for (int j = 0; j < sortedEmergency.length; j++) {
                    if (emergency[i] == sortedEmergency[j]) {
                        answer[i] = j + 1; // 1부터 시작하는 순서
                        break;
                    }
                }
            }
            
            return answer;
        }
    }

    코드 설명

    1. sortedEmergency = emergency.clone()
      emergency 배열을 복사해서 정렬 작업이 원본 배열에 영향을 미치지 않도록 한다.
    2. Arrays.sort(sortedEmergency)
      배열을 오름차순으로 정렬한 후, for 루프를 사용해 내림차순으로 뒤집는다.
    3. 진료 순서 계산
      이중 for 루프를 사용해 emergency 배열의 각 요소가 sortedEmergency 배열에서 몇 번째인지 찾는다. 찾은 순서에 1을 더해 결과 배열에 저장한다.