본문 바로가기
ALGORITHM/백준

[BOJ/PYTHON] 18870. 좌표 압축 (정렬)

by 뭉망뭉 2023. 5. 18.

백준 문제 링크: https://www.acmicpc.net/problem/18870

문제 요약

주어지는 좌표 X1, X2, ..., Xn에 좌표 압축을 적용한 결과 출력

핵심 아이디어

주어지는 숫자들을 중복 제거한 채로 정렬하고 제일 앞에 있는 것부터 인덱스값으로 0부터 시작하면 된다.

풀이

# silver2-18870. 좌표 압축

import sys
input = sys.stdin.readline

# X1, X2, ..., Xn 좌표 압축을 적용한 결과

n = int(input())
nums = list(map(int, input().split())) 

# 중복 제거한 리스트(오름차순) 만들기
# 그 리스트 돌면서 몇 번째인지 인덱스 프린트

sorted_nums = sorted(set(nums)) # 중복 제거된 정렬
# 딕셔너리 key는 값, value는 인덱스
sorted_nums = {sorted_nums[i] : i for i in range(len(sorted_nums))}
for i in nums:
  print(sorted_nums[i], end=' ')

실행 시간

메모리 154812KB, 시간 1816ms (python3)

댓글