좌표중 가장 작은 숫자부터 순서대로 압축된 좌표를 할당한다. 가장 작은 값을 가지는 좌표는 0으로, 그 다음은 1...
이렇게 하려면 우선 입력받은 좌표를 정렬하고, 중복을 제거하고, 좌표를 압축해야 한다.
import sys
input = sys.stdin.readline
N = int(input())
points = list(map(int, input().split()))
sortedPoints = list(sorted(set(points)))
compressedPoints = {sortedPoints[i]: i for i in range(len(sortedPoints))}
for i in points:
print(compressedPoints[i], end=' ')
집합으로 만드는 것과 in을 사용해서 중복을 제거하는 것이 같은 시간복잡도를 가질 줄 알았는데 아니었다. 덕분에 한참 헤맸다..