접근

좌표를 압축한 결과는 그 값보다 작은 '서로 다른 좌표의 개수'와 같다.

따라서 입력받은 좌표들을 set으로 바꾸어 중복을 제거해주고 정렬해주면 해당 좌표가 몇번째로 작은 좌표인지, 즉 해당 좌표보다 작은 좌표가 몇개인지를 확인할 수 있다. 인덱스를 딕셔너리 형태로 저장해주고, 각 좌표에 따라 불러옴으로써 문제를 해결할 수 있다.

코드

import sys

n = int(sys.stdin.readline())
points = list(map(int, sys.stdin.readline().split()))

points2 = list(sorted(set(points)))
dic = {points2[i]: i for i in range(len(points2))}
print(*[dic[i] for i in points])

더 생각해 볼 것?

...

코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기