🔅코딩테스트 공부🔅/❗백준
[백준] 18870번 좌표 압축(with python)
윤무무
2023. 1. 25. 02:55
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
1. 내가 작성한 코드
import sys
n = int(sys.stdin.readline())
arr = list(map(int,sys.stdin.readline().split()))
num = sorted(set(arr))
for i in arr:
print(num.index(i), end=' ')
set 함수를 이용해 arr의 중복을 제거한 후, 인덱스 값을 출력하는 형태로 풀이를 진행했다.
그러나 index()로 인해 시간복잡도가 증가되어 시간 초과가 발생하는 상황😥😥
딕셔너리를 이용하는 방법으로 수정했다.
2. 수정 후 코드
import sys
n = int(sys.stdin.readline())
arr = list(map(int,sys.stdin.readline().split()))
num = sorted(set(arr))
dic = {num[i]:i for i in range(len(num))}
for i in arr:
print(dic[i], end=' ')
index를 하나하나 조회할 필요 없이 key값으로 value를 찾을 수 있어 시간을 절약할 수 있다.
딕셔너리 활용하기✨