[알고리즘문제풀기] 진료 순서 정하기

silver's avatar
Dec 26, 2025
[알고리즘문제풀기] 진료 순서 정하기

문제

내가 작성한 정답

import java.util.*; class Solution { public int[] solution(int[] emergency) { int[] answer = new int[emergency.length]; Integer[] arr = new Integer[emergency.length]; int idx=0; for(int i:emergency) arr[idx++] = i; Arrays.sort(arr,Collections.reverseOrder()); for(int j=0;j<emergency.length;j++){ for(int i=0; i<arr.length; i++){ if(arr[i]==emergency[j]) answer[j] = i+1; } } return answer; } }

다른 사람들의 정답

class Solution { public int[] solution(int[] emergency) { int[] answer = new int[emergency.length]; // 응급도 순위를 저장할 배열 (크기: emergency와 동일) // i번째 사람의 순위를 계산 for(int i = 0; i < answer.length; i++){ if(answer[i] != 0){ // 이미 순위가 계산된 경우 (중복 처리 방지) continue; // 건너뛰기 } int idx = 1; // i번째 사람의 순위 초기값 (1등부터 시작) // i번째 사람보다 응급도가 높은 사람 수 세기 for(int j = 0; j < answer.length; j++){ if(emergency[i] < emergency[j]){ // i번째 < j번째 응급도 idx++; // 나보다 높은 사람이 있으면 내 순위 밀림 } } answer[i] = idx; // i번째 사람의 최종 순위 저장 } return answer; // 각 사람의 순위 배열 반환 } } import java.util.Arrays; import java.util.Comparator; import java.util.stream.Collectors; class Solution { public int[] solution(int[] e) { return Arrays.stream(e) .map(i -> Arrays.stream(e) .boxed() .sorted(Comparator.reverseOrder()) .collect(Collectors.toList()).indexOf(i) + 1) .toArray(); } }
Share article

silver