http://acmicpc.net/problem/18870
{코드}
n = int(input())
org = tuple(map(int, input().split()))
ans = {k: i for i, k in enumerate(sorted(set(org)))}
[print(ans[k], end=' ') for k in org]
{설명}
압축될 숫자는 결국 주어진 값들을 정렬했을 때 그 숫자의 인덱스와 같습니다.
여기서 수들을 중복없이 정렬해야하기에 집합으로 만든 후 정렬하고 값을 키, 값의 인덱스를 value로 해서 딕셔너리를 생성합니다.
이후 각 값에 대해 딕셔너리에서의 value를 출력하면 됩니다.
'알고리즘 공부 > BOJ백준 풀이' 카테고리의 다른 글
[백준 21760번-파이썬] 야구 시즌 (0) | 2021.06.14 |
---|---|
[백준 21756번-파이썬] 지우개 (0) | 2021.06.14 |
[백준 10773번-파이썬] 제로 (0) | 2021.06.14 |
[백준 4949번-파이썬] 균형잡힌 세상 (0) | 2021.06.14 |
[백준 2580번-파이썬] 스도쿠 (0) | 2021.06.14 |