✏️ 문제 설명
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
✏️ code
📌 Arrays.sort(sorted)
: emergency를 복사해 sorted 배열을 만듭니다. 그리고 이를 sort하여 오름차순으로 정렬합니다.
📌 Arrays.binarySearch()
: 배열에서 요소가 위치하는 인덱스를 찾습니다.
📌 int rank = emergency.length - Arrays.binarySearch(sorted, emergency[i])
- emergency: [3, 76, 24] / sorted: [3, 24, 76]
- i가 0인 경우, rank = 3 - 0 = 2 → answer[0] = 3
- i가 1인 경우, rank = 3 - 2 = 1 → answer[1] = 1
- i가 2인 경우, rank = 3 - 1 = 2 → answer[2] = 2
import java.util.*;
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
int[] sorted = emergency.clone();
Arrays.sort(sorted);
for (int i = 0; i < emergency.length; i++) {
int rank = emergency.length - Arrays.binarySearch(sorted, emergency[i]);
answer[i] = rank;
}
return answer;
}
}
반응형
'Java > 코딩테스트' 카테고리의 다른 글
[프로그래머스/120890] 가까운 수(Math.abs(), Math.min(answer, array[i]), 처음부터 배열을 sort했다면?) (0) | 2025.01.20 |
---|---|
[프로그래머스/120864] 숨어있는 숫자의 덧셈(2) (.isEmpty(), Integer.parseInt()) (0) | 2025.01.20 |
[프로그래머스/120887] k의 개수 (k+'0') (0) | 2025.01.20 |
[프로그래머스/18832] 정수를 나선형으로 배치하기(사방탐색 알고리즘) (1) | 2025.01.19 |
[프로그래머스/120888] 중복된 문자 제거(.toCharArray(), .indexOf(), .valueOf()) (0) | 2025.01.19 |