링크
백준 18870 좌표압축
가장 작은 숫자를 0으로 하고 오름차순으로 +1씩 더해주며 출력하면 된다. 단, 같은 순자는 같은 값을 갖는다.
이를 구현하기 위해 set
을 이용해 중복을 제거하고(같은 순서를 갖기 때문에), 리스트로 재변환해 정렬시켜줬다. 그 후 딕셔너리를 이용해 순서를 넣어준 후 이를 이용해 답을 출력했다.
import sys; input = sys.stdin.readline
N = int(input())
arr = list(map(int, input().split()))
rank_arr = sorted(list(set(arr)))
ans_dic = {}
for i in range(len(rank_arr)):
ans_dic[rank_arr[i]] = i
for i in range(N):
arr[i] = ans_dic[arr[i]]
print(*arr)