코드 힌트
- 문제 이해:
- 주어진 emergency 배열에서 각 요소의 우선순위를 순위로 변환합니다.
- 예를 들어, 가장 큰 값은 1등, 두 번째로 큰 값은 2등 등으로 정리합니다.
- 복사 및 정렬:
- emergency 배열을 복사하여 새로운 배열을 만들고 정렬합니다.
- 정렬된 배열을 사용하면 각 요소의 순위를 쉽게 파악할 수 있습니다.
- 요소 위치 찾기:
- 원본 emergency 배열과 결과 배열의 요소 위치는 동일합니다.
- 정렬된 배열을 활용하여 각 요소의 우선순위를 파악하고, 원본 배열의 각 요소에 맞는 순위를 결과 배열에 저장합니다.
- 이를 위해 요소의 인덱스를 찾는 방법으로 indexOf()를 사용할 수 있습니다.
- 순위 매기기:
- 정렬된 배열을 큰 값부터 순차적으로 탐색하며 각 값에 순위를 매깁니다.
- 이 순위를 원본 배열에서의 위치에 맞춰 결과 배열에 저장합니다.
정답은 더보기 클릭
더보기
import java.util.*;
class Solution {
public int[] solution(int[] emergency) {
// 배열의 길이를 n에 저장
int n = emergency.length;
// 결과를 저장할 배열을 n 길이로 초기화
int[] result = new int[n];
// 원래 배열의 값을 리스트에 복사 (indexOf 메소드 사용을 위해)
List<Integer> list = new ArrayList<>();
for (int num : emergency) {
list.add(num);
}
// 원본 배열을 복사하고 정렬하여 우선순위를 쉽게 매길 수 있게 함
int[] sortedEmergency = Arrays.copyOf(emergency, n);
Arrays.sort(sortedEmergency);
// 우선순위 순위를 매기기 위한 변수 count 초기화
int count = 1;
// 정렬된 배열을 뒤에서부터 탐색 (큰 값부터 처리)
for (int i = n - 1; i >= 0; i--) {
// 현재 가장 높은 우선순위 요소를 찾음
int target = sortedEmergency[i];
// 원래 배열에서 이 요소가 어디에 위치했는지 찾아서 결과 배열에 순위를 저장
result[list.indexOf(target)] = count++;
}
// 최종적으로 우선순위가 매겨진 결과 배열을 반환
return result;
}
}
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 팩토리얼 (0) | 2024.08.14 |
---|---|
[프로그래머스] 모스부호 (1) (0) | 2024.08.14 |
[프로그래머스] 전국 대회 선발 고사 (0) | 2024.08.13 |
[프로그래머스] 그림 확대 (1) | 2024.08.13 |
[프로그래머스] 정수를 나선형으로 배치하기 (0) | 2024.08.13 |