최대 1 분 소요

1. 문제 분석

  1. 중복값 없이 좌표를 정렬한다.

    Set에 넣은 다음 Sorted 함수를 통해 정렬된 리스트를 받는다

    정렬 된 모습

    sorted X -10 -9 4 2
    X’ 0 1 2 3
  2. sorted X와 X’를 연결 해야한다.

    sorted X를 Key, X’를 Value로 넣은 딕셔너리를 만든다

2. 코드

import copy
import sys

compressed_X = dict() # 압축 좌표를 저장할 딕셔너리

N = int(input())

X = list(map(int, sys.stdin.readline().split()))
copy_X = copy.deepcopy(X) # 본래 좌표 순서가 저장된 배열

X = sorted(set(X)) # 좌표를 집합에 넣어 중복값을 없애고, 정렬한다

for i in range(len(X)):
    compressed_X[X[i]] = i # 본래 좌표(key) 압축 좌표(value)로 딕셔너리에 저장한다

for i in copy_X:
    print(compressed_X[i], end=' ')


X = sorted(set(X)) # 좌표를 집합에 넣어 중복값을 없애고, 정렬한다

중복값을 없앤 정렬된 X좌표를 구한다

# 중복값을 없앤 좌표(key), 압축 좌표(value)를 한 쌍으로 딕셔너리에 저장한다
for i in range(len(X)):
    compressed_X[X[i]] = i 

sorted X를 Key, X’를 Value로 넣은 딕셔너리를 만든다

3. 총평

문제의 해결 방법은 매우 빨리 찾았지만
코드가 너무 길어지는 것 같아서
짧게 코딩을 하려다 시간이 좀 걸린 것 같다.

파이썬은 깊은 복사를 하는게 매우 쉬운 것 같다.
조만간 자바로 다시 돌아가야하는데
잘 적응 할 수 있을지 걱정이다,,, ㅠㅜ

댓글남기기