[Boj] 좌표압축 18870(python)
문제링크 : https://www.acmicpc.net/problem/18870
원소의 갯수 N과 좌표 압축하는 리스트 numbers가 주어진다.
먼저, 중복되는 원소를 set(numbers)
를 통해 없애주고,
리스트로 변환하고 정렬한다.
이를 enumerate
를 이용하여 리스트의 원소를 키로 리스트의 인덱스를 값으로 하는 딕셔너리를 만든다.
이를 이용해, 원래 리스트를 압축한다.
이 방법은 입력된 원소가 굉장히 많으면서 원소 간의 순서를 결정해야 할 때 주로 사용된다.
N = int(input())
numbers = list(map(int, input().split()))
set_numbers = list(set(numbers))
dict_idx = {}
set_numbers.sort()
for idx, val in enumerate(set_numbers):
dict_idx[val] = idx
for num in numbers:
print(dict_idx[num], end=' ')
댓글남기기