주어진 배열을 가장 작은 수 부터 랭크를 매겨서 반환하는 문제입니다.
깊은 복사로 주어진 배열의 복사본을 만들어 정렬하고 Map 에 <배열 숫자, 랭크> 로 만들어 저장했습니다.
새 배열에 arr 에 저장된 순서대로 Map 에서 값을 가져와 저장하고 반환했습니다.
import java.util.*;
class Solution {
Map<Integer, Integer> map = new HashMap<>();
public int[] arrayRankTransform(int[] arr) {
int[] copy = arr.clone();
Arrays.sort(copy);
int rank = 1;
for(int i = 0; i < copy.length; i++) {
if(!map.containsKey(copy[i])) {
map.put(copy[i], rank++);
}
}
int[] answer = new int[arr.length];
for(int i = 0; i < arr.length; i++) {
answer[i] = map.get(arr[i]);
}
return answer;
}
}