n = int(input())
points = list(map(int, input().split()))
compressed_points = sorted(set(points))
points_dict = {compressed_points[i]: i for i in range(len(compressed_points))}
result = [points_dict[x] for x in points]
print(*result)
코드 설명
공백 한 칸으로 구분하여 입력받는 X1, X2, ..., XN
을 points
리스트에 int형으로 바꾸어 넣어준다. 그리고 points
리스트에서 중복값을 제거하고, 정렬하여 compressed_points
리스트를 만들어준다.
처음에는 굳이 int형으로 바꾸지 않고 string형 리스트로 활용하는 방법을 생각하였으나, string형 변수를 사용할 경우에는 set()
, sorted()
함수를 사용하기 힘들어 int형으로 사용하기로 하였다.
💡 딕셔너리 자료형:
{Key1:Value1, Key2:Value2, Key3:Value3, ...}
기존 좌표 값과 압축된 좌표 값을 매핑시켜주기 위하여 딕셔너리 자료형을 활용하였다. points_dict
에 key값에는 기존 좌표값을, value값에는 압축된 좌표값을 넣어 딕셔너리를 만들어준다. 결과를 저장할 리스트 result
에 기존 좌표값을 압축된 좌표값으로 변경하여 저장한다.