반응형
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
풀이
- 문제 내용은 받아온 수들을 정렬해 순서를 정해주는 문제 였다.
- 중복되는 수의 경우 같은 순서에 위치 하게 된다.
- 힙 구조를 이용한 힙 정렬을 이용해 정렬하고 , 이전에 pop 된 수와 비교하여 같으면 index를 증가시키지 않도록 구현했다.
import sys
import heapq
n = int(sys.stdin.readline())
heap = []
stack= list(map(int,sys.stdin.readline().split()))
for i in range(0,n):
heapq.heappush(heap, (stack[i],i))
cnt = 0
last_num = 0
for i in range(0,n):
if i == 0:
pops = heapq.heappop(heap)
last_num = pops[0]
stack[pops[1]] = cnt
else:
pops = heapq.heappop(heap)
if last_num == pops[0]:
stack[pops[1]] = cnt
else:
cnt += 1
last_num = pops[0]
stack[pops[1]] = cnt
for i in range(0,n-1):
print(stack[i],end=" ")
print(stack[n-1])
반응형
'코딩 > 백준' 카테고리의 다른 글
알고리즘 - Python / 백준 - 2116번 : 주사위 쌓기 (0) | 2021.09.04 |
---|---|
알고리즘 - Python / 백준 - 1389번 : 케빈 베이컨의 6단계 법칙 (0) | 2021.08.31 |
알고리즘 - Python / 백준 - 1931번 : 회의실 배정 (0) | 2021.08.25 |
알고리즘 - Python / 백준 - 1541번 : 잃어버린 괄호 (0) | 2021.08.25 |
알고리즘 - Python / 백준 - 11286번 : 절댓값 힙 (0) | 2021.08.25 |