https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
<내 코드>
- 입력을 받은 후 nums배열에 값과 인덱스를 다시 저장해주었다.
- 그리고 값을 기준으로 정렬했다.
- 가장 작은 값부터 정렬 되기 때문에 다음 값과 값이 다를때 cnt를 하나씩 증가시키면서 결과 배열에 담았다.
import sys
input = sys.stdin.readline
n = int(input())
temp = list(map(int, input().split()))
nums = []
for i in range(n):
nums.append([temp[i], i])
nums.sort(key = lambda x:x[0])
result = [0]*n
cnt = 0
for i in range(n-1):
if nums[i][0] == nums[i+1][0]:
result[nums[i+1][1]] = cnt
else:
cnt+=1
result[nums[i+1][1]] = cnt
print(*result)
'알고리즘 > 정렬' 카테고리의 다른 글
[백준 -실버5] 10989번 수 정렬하기 3(정렬, 파이썬) (0) | 2022.02.05 |
---|---|
[백준 -실버5] 11651번 좌표 정렬하기2(정렬, 2차원 리스트 정렬, 파이썬) (0) | 2022.02.05 |
[프로그래머스 - Level 2] 가장 큰 수(정렬, 파이썬) (0) | 2022.01.24 |
[백준-실버5] 1181번 단어 정렬(파이썬) (0) | 2022.01.20 |
[백준-실버5] 11650번 좌표 정렬하기(파이썬) (0) | 2022.01.20 |