😎풀이

  1. 정렬된 배열 생성
  2. 해시맵 사용
  3. 정렬된 배열을 순회
    3-1. 현재 요소가 이미 있다면 랭크 미할당 (동일 값은 동일 랭크 원칙)
    3-2. 없다면 현재 랭크를 할당하고 랭크 증가
  4. 현재 요소에 랭크를 적용하여 반환
function arrayRankTransform(arr: number[]): number[] {
    const sorted = arr.toSorted((a, b) => a - b)
    const rankMap = new Map<number, number>()
    let curRank = 1
    for(let i = 0; i < arr.length; i++) {
        const cur = sorted[i]
        if(rankMap.has(cur)) continue
        rankMap.set(cur, curRank++)
    }
    return arr.map(num => rankMap.get(num))
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글