문제
https://leetcode.com/problems/rank-transform-of-an-array
풀이
배열의 각 원소를 크기 기준으로 순위로 변환해 리턴하는 문제이다. 배열을 정렬한 뒤 각 원소에 순위를 매핑하고, 원본 배열 순서대로 순위를 꺼내 리턴한다.
문제에서 주의점이 하나 있는데, 같은 숫자는 같은 순위를 가진다는 것이다. 따라서 매핑할 때, 중복처리를 해줘야 한다.
코드
class Solution:
def arrayRankTransform(self, arr: List[int]) -> List[int]:
sortedArr = sorted(arr)
rankDict = {}
rank = 1
for element in sortedArr:
if not element in rankDict:
rankDict[element] = rank
rank += 1
return list(map(lambda x: rankDict[x], arr))