본문 바로가기
Algorithm

[정렬/탐색] 백준 18870 좌표 압축 - Python

by jangThang 2022. 2. 22.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    18870번: 좌표 압축

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

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     오름차순으로 정렬한 뒤 최솟값부터 0, 1, 2 ... 매칭하는 문제입니다.

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    [ Contents ] 1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하

    star7sss.tistory.com

     딕셔너리 자료형을 이용하면, 예전 좌표와 새로운 좌표를 쉽게 매칭할 수 있습니다.

     

     

     

    3. 코드

    N = int(input())
    X = list(map(int, input().split()))
    
    setX = set(X) #중복값 제거
    setX = sorted(setX) #정렬
    
    dictX = {}
    for i in range(len(setX)):
        dictX[setX[i]] = i
    
    for i in X:
        print(dictX[i], end=" ")

     중복값을 제거하고, 오름차순으로 좌표값을 정렬합니다. 최솟값부터 0, 1, 2... 으로 딕셔너리로 매칭합니다.

     이후, X의 좌표를 새로운 좌표로 매칭한 뒤 출력합니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글