본문 바로가기
algorithm/Programmers

[JAVA] 진료 순서 정하기

by 이쟝 2023. 1. 14.

1. 오름차순으로 sort 한 뒤 이중 for문

import java.util.Arrays;

class Solution {
    public int[] solution(int[] emergency) {
        // int[] asc = emergency.clone(); 
        int[] asc = Arrays.copyOf(emergency, emergency.length);
        int[] answer = new int[emergency.length];
        
        Arrays.sort(asc);
        
        for(int i=0; i<emergency.length; i++) {
            for(int j=0; j<emergency.length; j++) {
               if(asc[i] == emergency[j]) answer[j] = emergency.length - i;
            }
        }
        return answer;
    }
}

arr.clone( ) 아니면 Arrays.copyOf(arr, arr.length)으로 배열 복사 가능 JavaScrtipt의 전개연산자와 동일한 느낌이다..! (...arr)

2. 이중 for문

class Solution {
    public int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];
        
        // 배열 값 비교하면서 자신보다 응급도보다 높은 값이 있으면 순서 배열에 +1
        for(int i=0; i<emergency.length; i++) {
            for(int j=0; j<emergency.length; j++) {
               if(emergency[i] < emergency[j]) answer[i]++;
            }
            // 순서 배열의 모든 값에 + 1 (0이아닌 1부터 하기 위해서)
            answer[i]++;
        }
        return answer;
    }
}

굳이 정렬을 하지 않고 emergency에 이중 for문으로 자기보다 큰 값이 있는지 확인해도 됐다..!

'algorithm > Programmers' 카테고리의 다른 글

[JAVA] 점의 위치 구하기  (0) 2023.01.19
[JAVA] 가위 바위 보  (0) 2023.01.18
[JAVA] 순서쌍의 개수(약수의 개수 구하는 알고리즘)  (0) 2023.01.14
[JAVA] 외계행성의 나이  (0) 2023.01.14
[JAVA] 배열 자르기  (0) 2023.01.13