수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다.
X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.
각 숫자의 좌표가 압축된 결과를 출력하자.
먼저 숫자 리스트에서 중복을 제거 후 정렬을 해준다.
이 때의 인덱스값이 숫자들의 압축된 결과이다.
이 순서대로 좌표들의 압축값으로 변경해주면된다.
import sys
if __name__ == '__main__':
N = int(sys.stdin.readline().rstrip())
num_list = list(map(int, sys.stdin.readline().split()))
num_index = dict()
prev_num = 1000001
index = 0
for num in list(set(num_list)):
if num == prev_num:
continue
else:
num_index[num] = index
prev_num = num
index += 1
for num in num_list:
print(num_index[num], end=' ')
좌표 압축이라는 새로운 개념을 배울 수 있는 문제였다.