본문 바로가기
Coding Test/프로그래머스

[Java] 진료 순서 정하기

by 노 코딩 노 라이프 2024. 4. 4.

문제설명

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

 

제한사항

  • 중복된 원소는 없습니다.
  • 1 ≤ emergency의 길이 ≤ 10
  • 1 ≤ emergency의 원소 ≤ 100

입출력 예

 

입출력 예 설명

입출력 예 #1

  • emergency가 [3, 76, 24]이므로 응급도의 크기 순서대로 번호를 매긴 [3, 1, 2]를 return합니다.

입출력 예 #2

  • emergency가 [1, 2, 3, 4, 5, 6, 7]이므로 응급도의 크기 순서대로 번호를 매긴 [7, 6, 5, 4, 3, 2, 1]를 return합니다.

입출력 예 #3

  • emergency가 [30, 10, 23, 6, 100]이므로 응급도의 크기 순서대로 번호를 매긴 [2, 4, 3, 5, 1]를 return합니다.

코드 설명

int len = emergency.length;
int[] answer = new int[len];

먼저 emergency의 길이 만큼의  answer 배열을 만들어줍니다.

 

이제부터 입출력 예1로 예시를 들어보곘습니다. 

emergency :  [3, 76, 24]
answer : [0,0,0]
for(int i = 0; i < len; i++) {
	answer[i] = 1;
}

그 후 answer의 모든 값을 1로 초기화 해줍니다.

emergency : [3, 76, 24]
answer : [1,1,1]
for(int i = 0; i < len; i++) {
            for(int j = 0; j < len; j++) {
                if(emergency[i] < emergency[j]) {
                    answer[i]++;
                }
            }
        }

이중 for문을 이용하여 자기 자신과 다른 값들을 비교해주면서 자신의 값이 다른 값보다 작을 경우 +1를 해줍니다.

 

첫 번째 반복문에서 i가 0일 때, 안쪽 반복문은 j가 0, 1, 2일 때를 순회하게 됩니다.

  1. i가 0일 때, j가 0일 때
    • emergency[0]은 3이고, emergency[0]과 emergency[0]을 비교합니다. 자기 자신과의 비교이므로 패스합니다.
  2. i가 0일 때, j가 1일 때
    • emergency[0]은 3이고, emergency[1]은 76입니다. 이때 emergency[0]이 emergency[1]보다 작으므로 answer[0]을 증가시킵니다. 따라서 answer[0]은 2가 됩니다.
  3. i가 0일 때, j가 2일 
    • emergency[0]은 3이고, emergency[2]는 24입니다. 이때 emergency[0]이 emergency[2]보다 작으므로 answer[0]을 증가시킵니다. 따라서 answer[0]은 3이 됩니다.

이제 i가 1일 때, j가 0, 1, 2일 때를 순회합니다. i가 2일 때에도 동일한 과정으로 진행이 됩니다!


소스코드&결과

코드

class Solution {
    public int[] solution(int[] emergency) {
        int len = emergency.length;
        int[] answer = new int[len];
        for(int i = 0; i < len; i++) {
            answer[i] = 1;
        }
        
        for(int i = 0; i < len; i++) {
            for(int j = 0; j < len; j++) {
                if(emergency[i] < emergency[j]) {
                    answer[i]++;
                }
            }
        }
        
        return answer;
    }
}

결과