코딩테스트/Python
[Python] 백준 #18870 - 좌표압축
yo~og
2021. 11. 28. 18:31
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
풀이
import sys
input =sys.stdin.readline
n = int(input())
arr = list(map(int,input().split()))
s = list(sorted(set(arr)))
dic={value:index for index,value in enumerate(s)}
for i in arr:
print(dic[i],end=" ")
1. n개의 숫자를 입력받아 리스트로 만들어준다.
2. 리스트에서 중복된 것을 없애주기 위해서 집합으로 만들어주고 정렬해준다. 그 다음 다시 리스트로 만들어준다.
3. 중복을 제거한 리스트를 enumerate로 인덱스와 값을 구하고 딕셔너리로 만들어준다. 딕셔너리의 key가 s의 값이 되고 value가 그 값의 순서가 된다.
4. arr의 값을 딕셔너리에 조회한다. dic[i]를 하면 그 값의 순서가 나온다.
나는 딕셔너리를 만들지 않고 s.index(i)를 사용하여 위치를 구하였다. 그래서 계속 시간초과가 나왔다!!ㅠㅠ
결국 인터넷 행.. 딕셔너리로 만들어서 구하니 시간초과가 안난다.. index가 느린건 알고있었지만.. 휴 ㅠ 딕셔너리로 만드는거 기억하자,,