문제 링크
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
풀이
- data2 에 data를 set으로 중복을 없애준 후 오름차순으로 정렬한 리스트를 넣어준다.
- dic은 key는 숫자, value 는 자신보다 작은 숫자의 개수이다.
이 때 각 숫자의 자신보다 작은 숫자의 개수는 data2에서 해당 숫자의 인덱스와 같다.
따라서 dic[data2[i]] = i 를 for문 실행한다.
- data에 입력된 순서대로 답을 출력해야 하므로 data의 숫자 별 value 값을 순서대로 answer에 저장해준다.
# 빨리 끝나는 거
import sys
input = sys.stdin.readline
n = int(input())
data = list(map(int,input().split()))
data2 = sorted(list(set(data)))
dic = {}
for i in range(len(data2)):
dic[data2[i]] = i
answer = []
for i in data:
answer.append(dic[i])
print(*answer)
'개발 > algorithm' 카테고리의 다른 글
[백준 1697번] 숨바꼭질 - python (0) | 2022.02.16 |
---|---|
[백준 1074번] Z - python (0) | 2022.02.15 |
[백준 1931번] 회의실 배정 - python (0) | 2022.02.15 |
[백준 1780번] 종이의 개수 - python (0) | 2022.02.15 |
[백준 2630번] 색종이 만들기 - python (0) | 2022.02.15 |