본문 바로가기

BOJ

[BOJ][Python] 백준 18870번 - 좌표 압축

728x90

문제 링크: https://www.acmicpc.net/problem/18870

 

18870번: 좌표 압축

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

www.acmicpc.net

 

 


문제 풀이

set()과 딕셔너리로 풀었다. 먼저 집합으로 만들어서 중복된 숫자들을 지워주고 다시 리스트로 변환했다.

이후 다시 오름차순으로 정렬했는데, 꼭 정렬해줘야 한다. set()은 정렬을 고려하지 않기 때문에 정렬된 상태로 입력을 줘도 정렬이 안 되어 있을 수 있다. 어짜피 그렇게 안줄때도 있어서 하긴 해야한다.

이후 딕셔너리를 하나 만들어주고 반복문을 이용하여 차례대로 만들어준 리스트를 확인해줬다.

0부터 시작해서 가장 작은 숫자는 0, 그 다음은 1, 그 다음은 2, ... 가 출력되게 딕셔너리를 이용해주고, 다시 원래의 리스트로 돌아와서 반복문을 이용해 압축된 좌표로 바꿔주었다.

 

 

코드

 

 

여담

맞은 사람 중에 언어 그룹 Python에 들어가면 이 코드가 1등이다. 왜지?

사실 나도 이 문제 풀 당시에 잘 몰라서 검색해본거 같은데...

728x90