본문 바로가기

~2023

[Python] 백준 18870번, 좌표 압축

728x90
반응형

1. 알고리즘

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

2. 코드

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])
728x90
반응형