백준 문제 링크: 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)
'ALGORITHM > 백준' 카테고리의 다른 글
[BOJ/PYTHON] 4803. 트리 (0) | 2023.05.24 |
---|---|
[BOJ/PYTHON] 1717. 집합의 표현 (0) | 2023.05.24 |
[BOJ/PYTHON] 1448. 삼각형 만들기 (정렬) (0) | 2023.05.18 |
[BOJ/PYTHON] 11656. 접미사 배열 (정렬) (0) | 2023.05.18 |
[BOJ/PYTHON] 11582. 치킨 TOP N (정렬) (0) | 2023.05.18 |
댓글