본문 바로가기

백준 문제 풀이 및 피드백

2023.01.18 좌표압축 백전 [파이썬]

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

 

18870번: 좌표 압축

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

www.acmicpc.net

 

import sys
input = sys.stdin.readline
n = int(input().strip())
lists = list(map(int,input().split()))
sort_list = sorted(list(set(lists))) # 중복된걸 제외하고 정렬한다.
dicts = {}
for i ,val in enumerate(sort_list):
    dicts[val] = i
for i in lists:
    print(dicts[i],end = " ")

 

순간 방법이 안 떠올라서 고민하고 있다가 막힐때는 dict를 먼저 고민하자고 생각했었던게 기억이 나고 보니 바로 풀렸다.

중복되어 있는 요소를 제거하고 정렬해서 각 숫자의 순위를 정한 다음에 들어왔던 list를 돌면서 val에 맞는 순위를 print 해줬다.