코딩테스트 연습/프로그래머스 LV.0

[프로그래머스] Lv.0 진료 순서 정하기 - 자바(Java)

5ein 2024. 4. 9. 23:59

문제: 코딩테스트 연습 - 진료순서 정하기 | 프로그래머스 스쿨 (programmers.co.kr)

문제설명

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


제한사항

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

입출력 예

emergency result
[3, 76, 24] [3, 1, 2]
[1, 2, 3, 4, 5, 6, 7] [7, 6, 5, 4, 3, 2, 1]
[30, 10, 23, 6, 100] [2, 4, 3, 5, 1]

나의 문제 풀이

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

다른 사람의 문제풀이

import java.util.*;
class Solution {
    public int[] solution(int[] emergency) {
        Map<Integer, Integer> map = new HashMap<>();
        int[] emergencySort = Arrays.copyOfRange(emergency, 0, emergency.length);
        Arrays.sort(emergencySort);
        int size = emergency.length;
        for(int i = 0; i<emergencySort.length; i++){
            int e = emergencySort[i];
            map.put(e, size-i);
        }
        for(int i = 0; i<emergency.length; i++){
            emergency[i] = map.get(emergency[i]);
        }
        return emergency;
    }
}

느낀점

다른사람 풀이의 Map을 이용한 방법이 배열의 크기가 커질 수록 이중 반복문보다 해시맵을 사용하는게 효과적이기 때문에 좋은 방법인것 같다!


문제 출처: 코딩테스트 연습 | 프로그래머스 스쿨 (programmers.co.kr)