📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] 백준 18870 좌표 압축 문제 풀이

Written by Donghak Park

문제 출처 : www.acmicpc.net/problem/18870

 

18870번: 좌표 압축

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

www.acmicpc.net


문제 해석 : 좌표를 새롭게 부여하는 문제이다. 즉 자신이 몇번째 순서인지로 수를 바꾸는 것이다. 이때 중복되는 수가 있을 경우 같은 수를 가진다.

 

문제 풀이 : 중복을 제거하고 정렬한 다음 딕셔너리로 만들어서 해당 숫자를 매핑 해주면 된다. 따라서 파이썬에서 제공하는 set() 과 sorted(), dictionary 자료형을 활용하면 풀 수 있다.


풀이 코드

import sys
input = sys.stdin.readline

N = int(input())
arr = list(map(int, input().split()))
arr2 = list(sorted(set(arr)))
dic = {value: index for index, value in enumerate(arr2)}

for element in arr:
    print(dic[element], end= " ")

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.