코테/BOJ
백준 18870 [좌표 압축] 파이썬
동 캄
2023. 3. 20. 11:19
반응형
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
#백준 18870 좌표 압축
import sys
input=sys.stdin.readline
N=int(input())
l=list(map(int,input().split())) #리스트에 저장
temp=list(map(int,l)) # 좌표 압축을 진행하기 위해 임시 리스트(temp) 생성
temp=list(set(temp)) # temp의 중복 제거
temp.sort() # temp를 정렬
compress={}
answer=[]
for i in range(len(temp)):
compress[temp[i]]=i #제일 작은 값부터 순서대로 번호를 가지도록 설정
for i in range(N):
answer.append(compress[l[i]])
print(*answer)
임시 리스트를 만든뒤에, 중복을 제거하고 정렬한다.
compress라는 딕셔너리를 만들고, 제일 작은 값부터 순서대로 각 key값에 각 순서(index)를 넣어준다.
그러고나서 리스트의 값을 변환해준다.(압축해준다.)
반응형