문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
정수 배열 arr이 주어졌을 때, 각 요소를 해당 순위로 바꿔라.
순위는 요소의 크기를 나타낸다. 순위는 아래와 같은 규칙을 따른다.
#1
Input: arr = [40, 10, 20, 30]
Output: [4, 1, 2, 3]
Explanation: 40이 가장 큰 요소이다. 10이 가장 작다. 20이 두번째로 작다. 30이 세번째로 작다.
#2
Input: arr = [100, 100, 100]
Output: [1, 1, 1]
Explanation: 같은 요소들은 같은 순위를 공유한다.
#3
Input: arr = [37, 12, 28, 9, 100, 56, 80, 5, 12]
Output: [5, 3, 4, 2, 8, 6, 7, 1, 3]
class Solution {
public int[] arrayRankTransform(int[] arr) {
Map<Integer, Integer> ranks = new HashMap<>();
int rank = 1;
int[] temp = arr.clone();
Arrays.sort(temp);
for(int i = 0; i < arr.length; i++){
if(!ranks.containsKey(temp[i])){
ranks.put(temp[i], rank++);
}
}
for(int i = 0; i < arr.length; i++){
arr[i] = ranks.get(arr[i]);
}
return arr;
}
}