반응형
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
💡IDEA
정렬을 사용하는 문제이다.
좌표 압축의 조건은 현재 값보다 작은 값의 개수를 구하면 되기 떄문에 정렬이 필요하다.
정렬한 배열에서 자신이 몇 번째인지 딕셔너리로 기록해둔 후 원래 배열의 순서에 맞게 출력한다.
이 때 중복된 값이 있을 수 있으므로 set() 함수를 사용해야한다는 점을 주의한다.
📌CODE
import sys
input = sys.stdin.readline
N = int(input())
X = list(map(int, input().split()))
X_sort = sorted(list(set(X)))
X_dict = {}
tmp = 0
for x in X_sort:
X_dict[x] = tmp
tmp += 1
for i in range(N):
X[i] = X_dict[X[i]]
print(*X)
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ][python] 1926. 그림 (0) | 2022.08.20 |
---|---|
[BOJ][python] 1080. 행렬 (0) | 2022.08.20 |
[BOJ][python] 6603. 로또 (0) | 2022.08.15 |
[BOJ][python] 16234. 인구 이동 (0) | 2022.08.14 |
[BOJ][python] 14891. 톱니바퀴 (0) | 2022.08.13 |