백준 코드 공부/파이썬

백준 18870 : 좌표 압축 (Python)

GUuu9 2022. 5. 18. 20:28

문제

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

 

18870번: 좌표 압축

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

www.acmicpc.net


문제

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.

Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다.

X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.

입력

첫째 줄에 N이 주어진다.

둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.

출력

첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.

제한

  • 1 ≤ N ≤ 1,000,000
  • -109 ≤ Xi ≤ 109

예제 입력 1 복사

5
2 4 -10 4 -9

예제 출력 1 복사

2 3 0 3 1

예제 입력 2 복사

6
1000 999 1000 999 1000 999

예제 출력 2 복사

1 0 1 0 1 0

출처

알고리즘 분류

 


import sys
input = sys.stdin.readline

data_dic = {}     # 데이터 딕셔너리
rate = 0          # 입력 데이터 우선순위
result = []

N = int(input())  # 입력받을 데이터 수
data = list(map(int, input().split())) # 입력 데이터
x = sorted(set(data)) # x에 data를 정렬 및 중복 제거

for _ in x:      # 순서에 맞게 rate 설정
  data_dic[_] = rate 
  rate += 1

for _ in data: # dic 값과 비교하여 결과 값을 result에 저장
  if _ in data_dic:
    _ = data_dic[_]
    result.append(_)

print(*result)

딕셔너리를 사용해서 풀었습니다.


Git Hub

https://github.com/GUuu9/BaekJoon-Study/blob/python/18870.py

 

GitHub - GUuu9/BaekJoon-Study

Contribute to GUuu9/BaekJoon-Study development by creating an account on GitHub.

github.com