문제:

수직선 위에 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
= 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

 

18870번: 좌표 압축

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌

www.acmicpc.net

 

'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

+ Recent posts