최대 1 분 소요

문제링크 : 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=' ')

카테고리:

업데이트:

댓글남기기