반응형
[문제 출처]
https://www.acmicpc.net/problem/18870
[문제 풀이]
입력이 주어졌을 때 그 숫자들을 0부터의 값으로 바꾸어 주면 되는 문제이다.
이름은 압축이지만, 기존 비율을 그대로 반영시키는 것이 아닌,
오름차순으로 정렬했을 때 몇 번째에 해당하는지로 좌표값을 변경시켜주어야 한다.
따라서 주어진 입력을 오름차순으로 정렬하고, 순서대로 0부터의 값을 배정하였다.
같은 값에 대해서는 같은 값으로 압축되어야 하므로 딕셔너리를 이용해 주었다.
#18870
import sys
input = sys.stdin.readline
n = int(input())
x = list(map(int,input().split()))
x_sorted = sorted(x)
new = dict()
v = 0
for i in x_sorted:
if i not in new.keys():
new[i] = v
v += 1
result = []
for i in x:
result.append(new[i])
print(*result)
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 백준 2525 오븐 시계 (0) | 2022.11.22 |
---|---|
[python/파이썬] 백준 4344 평균은 넘겠지 (0) | 2022.11.21 |
[python/파이썬] 백준 10814 나이순 정렬 (0) | 2022.11.17 |
[python/파이썬] 좌표 정렬하기2 (0) | 2022.11.16 |
[python/파이썬] 백준 11650 좌표 정렬하기 (0) | 2022.11.15 |