Algorithm/Problems

[백준/파이썬] 18870번 좌표 압축

공부좀하시졍 2022. 11. 9. 11:40

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

 

18870번: 좌표 압축

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

www.acmicpc.net

import sys

read = sys.stdin.readline

n = int(read())

dots = list(map(int, read().split()))

pressed = sorted(list(set(dots)))

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

for i in dots:
  print(dic[i], end=' ')

문제 이해조차 되지 않아서 검색을 해보았다...

 

입력된 좌표가 아래와 같다면 크기가 작은 것부터 0 1 2 3 ~ 으로 나타내야 하는 것이다.

2 4 -10 4 -9

우선, set함수를 이용해 중복 제거 및 정렬한 후 딕셔너리를 이용해 key는 좌표 값, value는 0~ 값으로 채운다.

이후 딕셔너리 특성을 활용해 출력만 해주면 된다!