진료순서 정하기

문제


나의 생각

하나의 배열의 만들고 emergency 값을 복사를 하고, 복사를 한 배열을 정렬한다. 

이후 정렬한 값과 emergency 값을 비교해서 같을때의 index 넘버를 가지고 answer 값을 지정하는 방식으로 접근.


나의 답안

public static int[] solution(int[] emergency) {
    int[] answer = new int[emergency.length];
    int[] temp = new int[emergency.length];
    System.arraycopy(emergency,0,temp,0, emergency.length);
    int num = emergency.length;
    Arrays.sort(temp);
    for (int i = 0; i < emergency.length; i++) {
        for(int j =0 ; j < emergency.length; j ++){
            if (temp[i] == emergency[j]){
                answer[j] = num--;
                System.out.println(Arrays.toString(answer));
                break;
            }
        }
    }
    return answer;
}

다른 답안

각 배열에 자신보다 작은 수를 카운트하면 원하는 답이 나올 수 있다. 

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;
    }
}

'Programmers 문제풀이 > Lv.0' 카테고리의 다른 글

숨어있는 숫자의 덧셈 (2)  (0) 2023.03.01
한 번만 등장한 문자  (0) 2023.03.01
k의 개수  (0) 2023.03.01
가까운 수  (0) 2023.03.01
2차원으로 만들기  (0) 2023.03.01