🔸 문제 설명
응급실에서는 응급도가 높은 환자부터 먼저 진료해야 해요.
정수 배열 emergency가 주어졌을 때,
각 환자의 진료 순위(응급도 높은 순)를 배열로 반환하는 문제입니다.
🔸 입출력 예
emergency | 결과 |
[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] |
🔍 문제 접근 방법
각 숫자가 전체 중 몇 번째로 큰 값인지를 판단하면 된다!
🔸 정답코드
import java.util.Arrays;
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
int[] copy = Arrays.copyOf(emergency, emergency.length);
Arrays.sort(copy); // 오름차순 정렬
for (int i = 0; i < emergency.length; i++) {
for (int j = 0; j < copy.length; j++) {
if (emergency[i] == copy[j]) {
answer[i] = copy.length - j; // 높은 값일수록 앞 순위
break;
}
}
}
return answer;
}
}
💡 핵심 개념 요약
개념 | 설명 |
Arrays.copyOf() | 원본 배열을 복사해 보존하기 |
Arrays.sort() | 정렬 (오름차순) |
copy.length - j | 순위 계산: 뒤에서부터 몇 번째인지 |
💭 느낀 점
순위 계산을 copy.length - j로 하는 것도 신기하고 재미있었다
'코딩테스트' 카테고리의 다른 글
[코딩테스트 입문] 구슬을 나누는 경우의 수 (nCr) ★★★ (0) | 2025.04.23 |
---|---|
[코딩테스트 입문] 모스부호 (1) ★ (0) | 2025.04.23 |
[코딩테스트 입문] 외계행성의 나이 ★ (0) | 2025.04.23 |
[코딩테스트 입문] 최댓값 만들기 (2) ★ (1) | 2025.04.22 |
[코딩테스트 입문] 문자열 정렬하기 (1) ★ (0) | 2025.04.22 |