728x90
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
# 조건
- 수직선 위에 N개의 좌표 X1, X2, ... Xn
- Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다.
- 1 <= N <=1,000,000
- -10^9 <= Xi <= 10^9
# 접근 방법 및 Solution
- 처음 리스트를 deepcopy를 통하여 복사해준다.
- 이후 오름차순 정렬을 하고 가장 작은 수부터 0으로 딕셔너리에 넣어준다.
- 원래 리스트를 순회하며 key에 해당하는 value값을 들고온다.
import sys
input = sys.stdin.readline
from copy import deepcopy
N = int(input())
num = [*map(int, input().split())]
num2 = deepcopy(num)
num2.sort()
result = dict()
n = 0
for i in num2:
if not i in result:
result[i] = n
n+=1
for j in num:
print(result[j], end= ' ')
728x90
'ALGORITHM > 정렬, 탐색,구현' 카테고리의 다른 글
[백준 5525번] 파이썬 - IOIOI (0) | 2022.10.12 |
---|---|
[백준 17276번] 파이썬 - 배열 돌리기 (0) | 2022.10.10 |
[백준 11723번] 파이썬 - 집합 (0) | 2022.09.22 |
[백준 10989] 파이썬 - 수 정렬하기 3 (0) | 2022.09.17 |
[백준 2805] 파이썬 - 나무 자르기 (0) | 2022.09.17 |