728x90
https://www.acmicpc.net/problem/18870
문제
수직선 위에 N개의 좌표 $X_1, X_2, ..., X_N$이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
$X_i$를 좌표 압축한 결과 $X'_i$의 값은 $X_i$ > $X_j$를 만족하는 서로 다른 좌표의 개수와 같아야 한다.
$X_1, X_2, ..., X_N$에 좌표 압축을 적용한 결과 $X'_1, X'_2, ..., X'_N$를 출력해보자.
입력
첫째 줄에 N이 주어진다.
둘째 줄에는 공백 한 칸으로 구분된 $X_1, X_2, ..., X_N$이 주어진다.
출력
첫째 줄에 $X'_1, X'_2, ..., X'_N$을 공백 한 칸으로 구분해서 출력한다.
제한
- 1 ≤ N ≤ 1,000,000
- $-10^{9} \le X_i \le 10^{9}$
728x90
예제 입력 1
5
2 4 -10 4 -9
예제 출력 1
2 3 0 3 1
예제 입력 2
6
1000 999 1000 999 1000 999
예제 출력 2
1 0 1 0 1 0
n = int(input())
x = list(map(int, input().split()))
# x를 정렬 & 중복 제거
arr = sorted(list(set(x.copy())))
# 딕셔너리에 인덱스와 값을 넣어 빨리 찾을 수 있게 함
dic = {}
for i in range(len(arr)):
dic[arr[i]] = i
for i in range(n):
print(dic[x[i]], end=' ')
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[백준, BOJ 24060] 알고리즘 수업 - 병합 정렬 1 (python) (1) | 2022.12.23 |
---|---|
[백준, BOJ 25501] 재귀의 귀재 (python) (1) | 2022.12.23 |
[백준, BOJ 25305] 커트라인 (python) (0) | 2022.12.22 |
[백준, BOJ 2587] 대표값2 (python) (0) | 2022.12.21 |
[백준, BOJ 2563] 색종이 (python) (0) | 2022.12.20 |