var arrayRankTransform = function (arr) {
let obj = {};
let sorted = [...arr].sort((a, b) => a - b); // 1
let answer = [];
let num = 0;
for (let item of sorted) { // 2
if (!obj[item]) {
obj[item] = num + 1;
num++;
}
}
for (let item of arr) { // 3
answer.push(obj[item]);
}
return answer;
};
let arr = [37, 12, 28, 9, 100, 56, 80, 5, 12];
arrayRankTransform(arr);
먼저, 정렬을 위해 sort
메서드를 사용했고, 원본 배열이 바뀌지 않게 spread 연산자와 함께 사용했다.
이후 Rank를 지정해주기 위해 2번의 방법을 사용했다. (객체 사용)
마지막으로 매개변수로 전달받은 arr
을 순회하며 answer
배열에 담아줬다.
수정, 지적을 환영합니다!
https://leetcode.com/problems/rank-transform-of-an-array/