개발 연습장/백준 문제풀이

[파이썬, Python] 백준 18870: 좌표 압축

LooanCheong 2023. 1. 11. 15:18
반응형

문제

https://www.acmicpc.net/problem/18870

 

18870번: 좌표 압축

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

www.acmicpc.net

코드

import sys
input = sys.stdin.readline

n = int(input())

num = list(map(int, input().split()))
numset = sorted(set(num))

dic = {numset[i]: i for i in range(len(numset))}

for i in num:
    print(dic[i], end=' ')

설명

우선 입력을 받아준 뒤,
set을 통해서 중복값을 제거한 넘버 리스트를 하나 생성한다.

이후 딕셔너리를 통해서 numset의 인덱스를 설정해 준다.

이렇게 되면 나온 숫자에 따라서 인덱스를 통해 좌표를 압축한 정렬이 가능해진다.

인덱스에 따라 num 값에 맞춰서 출력을 해주면 된다.

반응형