주니어 기초 코딩공부/JAVA_programmers_코딩테스트

진료 순서 정하기_programmers_lev00

jju_developer 2022. 12. 13. 15:00
728x90

<코딩 테스트>

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

 

<나의 풀이 과정>

우선 배열 두개를 생각했습니다.

정답을 답을 배열 하나, copy를 하고 sort를 한 배교 배열 하나.

 

비교 배열 copy를 sort로 정렬 후, emergency의 배열의 개수 를 해당 배열의 인덱스를 빼주어

큰수가 먼저 answer 배열에 담길 수 있도록 코딩하였습니다.

 

<나의 풀이 코드>

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] = emergency.length - j;
			}
		}
        return answer;
    }
}

<다른사람 풀이 1>

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

        for(int i = 0; i < answer.length; i++){
            if(answer[i] != 0){
                continue;
            }
            int idx = 1;
            for(int j = 0; j < answer.length; j++){
                if(emergency[i] < emergency[j]){
                    idx++;
                }
            }
            answer[i] = idx;
        }
        return answer;
    }
}

 

<다른사람 풀이 2>

import java.util.*;

class Solution {
    public int[] solution(int[] emergency) {
        int len = emergency.length;
        int[] answer = new int[len];
        Map<Integer, Integer> map = new HashMap<>();

        for (int i = 0; i < len; i++) {
            map.put(emergency[i], i);
        }

        Arrays.sort(emergency);

        for (int i = len-1; i >= 0; i--) {
            answer[map.get(emergency[i])] = len - i;
        }
        return answer;
    }
}

 

728x90