[Silver II] 좌표 압축 - 18870
성능 요약
메모리: 144340 KB, 시간: 2216 ms
분류
값 / 좌표 압축, 정렬
제출 일자
2023년 12월 11일 22:09:08
문제 설명
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다.
X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.
입력
첫째 줄에 N이 주어진다.
둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.
출력
첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.
n = int(input())
li = list(map(int, input().split()))
sorted_li = sorted(set(li))
result = dict()
for i in range(len(sorted_li)):
result[sorted_li[i]] = i
for i in li:
print(result[i], end=" ")
풀이
좌표 압축에 대해서 먼저 알아야 한다.
이 방식으로 문제를 풀이해봤는데 틀리길래 확인해보니 이전과 같은 수이면 인덱스를 늘리지 않는다.
다시 풀어보니 제대로 나왔고 이 문제에 대해 더 자세히 찾아보니 각 수보다 작은 수의 개수를 세면 더 쉽게 구할 수 있었다.
'코딩테스트 > Algorithm' 카테고리의 다른 글
[백준 python 1620] 나는야 포켓몬 마스터 이다솜 (0) | 2023.12.16 |
---|---|
[백준 python 7785] 회사에 있는 사람 (0) | 2023.12.15 |
[백준 python 1181] 단어 정렬 (0) | 2023.12.15 |
[백준 python 11651] 좌표 정렬하기 2 (0) | 2023.12.15 |
[백준 python 11650] 좌표 정렬하기 (0) | 2023.12.15 |