728x90
반응형
문제:
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다.
X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.
입력:
첫째 줄에 N이 주어진다.
둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.
출력:
첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.
풀이방법:
문제 설명을 어렵게 했지만 결국 입력으로 주어진 좌표를 작은 순으로 인덱스를 할당하면 되는 문제다. 이 때, 같은 값은 같은 인덱스로 설정해야 한다.
그래서 우선 수를 정렬하기 위해서 set, list, sorted를 순서대로 사용하고, 이렇게 얻은 값은 이제 새로운 좌표가 된다. 이제 입력에다가 새로 얻은 좌표를 다시 할당하고 출력하도록 한다.
1
2
3
4
5
6
7
8
9
10
|
N = int(input())
coord_list = list(map(int, input().split()))
sorted_list = sorted(list(set(coord_list)))
new_coord = {}
for i in range(len(sorted_list)):
new_coord[sorted_list[i]] = i
for i in coord_list:
print(new_coord[i], end=" ")
|
cs |
문제링크:
https://www.acmicpc.net/problem/18870
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[BOJ]2206. 벽 부수고 이동하기 (0) | 2021.08.03 |
---|---|
[BOJ]1753. 최단경로 (0) | 2021.07.29 |
[BOJ]2589. 보물섬 (0) | 2021.07.22 |
[BOJ]1062. 가르침 (0) | 2021.07.20 |
[BOJ]5397. 키로거 (0) | 2021.07.15 |