less than 1 minute read

문제

여기를 눌러 문제를 확인하세요.

문제에 따르면 원본 데이터에서 중복되는 수를 없애고 숫자가 작은 순서대로 번호를 매겨 저장한 압축 데이터를 생성한다. 그런 다음에 원본 데이터의 값들을 압축 데이터에 있는 값으로 변환해 출력해주면 된다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys

IN = sys.stdin.readline

if __name__ == "__main__":
    N = int(IN())
    arr = list(map(int, IN().split()))
    sort_arr = sorted(set(arr)) # 중복된 수 제거 후 정렬

    dic = {sort_arr[i]: i for i in range(len(sort_arr))} # 좌표 압축 사전화

    s = "" # 문자열로 연결
    for i in arr:
        s += str(dic[i]) + " "

    print(s[:-1])