티스토리 뷰

728x90

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


  • 문제 : 

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.

Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다.

X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.

 

 

 


  • 풀이 :

다른 값들중 내 값보다 작은 값이 몇 개 존재하는지 찾는 문제이다. dictionary를 사용하면 쉽게 해결할 수 있다.

 

 

 


  • 소스코드 : 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys
input = sys.stdin.readline
 
if __name__ == "__main__":
    N = int(input())
    l = list(map(int,input().split()))
    L = sorted(l)
    D = dict()
    for i in l:
        D[i] = 0
    prev = L[0]
    for i in range(1,len(L)):
        if  L[i] != prev:
            D[L[i]] = D[prev]+1
        else:
            D[L[i]] = D[prev]
        prev = L[i]
    for i in l:
        print(D[i],end= ' ')
cs
320x100
댓글
© 2022 WonSeok, All rights reserved