백준 문제 풀이 - 좌표 압축 18870번

Joonyeol Sim👨‍🎓·2022년 1월 25일
0

백준문제풀이

목록 보기
77/128

📜 문제 이해하기

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다.
X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.

💡 문제 재정의

각 숫자의 좌표가 압축된 결과를 출력하자.

✏️ 계획 수립

먼저 숫자 리스트에서 중복을 제거 후 정렬을 해준다.
이 때의 인덱스값이 숫자들의 압축된 결과이다.
이 순서대로 좌표들의 압축값으로 변경해주면된다.

💻 계획 수행

import sys

if __name__ == '__main__':
    N = int(sys.stdin.readline().rstrip())
    num_list = list(map(int, sys.stdin.readline().split()))
    num_index = dict()
    prev_num = 1000001
    index = 0

    for num in list(set(num_list)):
        if num == prev_num:
            continue
        else:
            num_index[num] = index
            prev_num = num
            index += 1

    for num in num_list:
        print(num_index[num], end=' ')

🤔 회고

좌표 압축이라는 새로운 개념을 배울 수 있는 문제였다.

profile
https://github.com/joonyeolsim

0개의 댓글