minimimi
[백준] 18870 좌표 압축 본문
반응형
문제출처] https://www.acmicpc.net/problem/18870
문제요약
좌표의 순위를 입력받은 순서대로 출력
풀이
소스코드는 Python 3으로 작성되었습니다.
import sys
input = sys.stdin.readline
n = int(input())
list_dots = []
# 인덱스를 저당하는 리스트를 만든다.
for i in range(n):
list_dots.append([i,0])
# 좌표를 입력받고 리스트에 저장한다.
list_values = list(map(int, input().split()))
# 입력 받은 좌표를 인덱스를 저장해 둔 리스트에 저장한다.
for i in range(n):
list_dots[i][1] = list_values[i]
# 좌표를 기준으로 오름차순 정렬한다.
list_dots.sort(key=lambda x : x[1])
# 좌표를 기준으로 오름파순 정렬된 리스트에 압축된 좌표를 저장한다.
score = 0
list_dots[0].append(score)
for i in range(1, n):
# 만약 좌표값이 같다면 압축된 좌표도 같으므로 score의 값은 증가하지 않는다.
if list_dots[i][1] != list_dots[i-1][1]:
score += 1
list_dots[i].append(score)
# 입력받은 순으로 다시 정렬해준다.
list_dots.sort(key=lambda x : x[0])
# 압축된 좌표만 띄어쓰기를 포함하여 출력한다.
for dot in list_dots:
print(dot[2], end = ' ')
반응형
'프로그래밍 공부 > 알고리즘' 카테고리의 다른 글
[백준] 2609 최대공약수와 최소공배수 (0) | 2021.09.26 |
---|---|
[백준] 1037 약수 (0) | 2021.09.25 |
[백준] 15649 N과 M (1) (0) | 2021.09.21 |
[백준] 2108 통계학 (0) | 2021.09.20 |
[백준] 10989 수 정렬하기 3 (0) | 2021.09.19 |