본문 바로가기

코딩

[Python] 백준 #18870. 좌표 압축

https://www.acmicpc.net/problem/18870

 

18870번: 좌표 압축

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌

www.acmicpc.net

 

# 18870 - Python 3

import sys

input = sys.stdin.readline

n = int(input())

arr = list(map(int, input().split()))

new_arr = list(set(arr))                            # 중복 제거한 arr를 새로운 list인 new_arr에 저장
new_arr.sort(reverse = False)

dic = {new_arr[i] : i for i in range(len(new_arr))} # 시간복잡도를 줄이기 위하여 dictionary 사용
    
for i in arr:
    print(dic[i], end=" ")

< line 12 >

- dic = {new_arr[i] : i for i in range(len(new_arr))}

: key를 new_arr[i], value를 i(크기 순서로 나열했을 때, 그 순서)로 하는 dictionary 생성

: 반복문 사용시보다 시간 줄일 수 있음