[백준] 18870번 문제, 좌표 압축
문제
여기를 눌러 문제를 확인하세요.
문제에 따르면 원본 데이터에서 중복되는 수를 없애고 숫자가 작은 순서대로 번호를 매겨 저장한 압축 데이터를 생성한다. 그런 다음에 원본 데이터의 값들을 압축 데이터에 있는 값으로 변환해 출력해주면 된다.
코드
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])