반응형
문제:
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
정답:
import sys
n = int(sys.stdin.readline())
array = list(map(int, sys.stdin.readline().split()))
# set 자료형으로 중복을 없애준 후 정렬
s_array = sorted(set(array))
# 딕셔너리 자료형을 사용해 시간복잡도를 크게 줄임
dic = {s_array[i]: i for i in range(len(s_array))}
for i in array:
print(dic[i], end=' ')
풀이:
for문, index() 함수를 사용해서 제출했을 때는 시간 복잡도를 고려하지 못해 시간 초과가 발생했었다.
딕셔너리 자료형을 사용해 시간 복잡도를 줄여 문제를 해결할 수 있었다.
딕셔너리 자료형을 사용하면 시간복잡도를 많이 줄여주기 때문에 앞으로 딕셔너리를 고려해서 문제를 풀어야 할 필요가 있을 것 같다.
잘 숙지해두고 사용할 수 있도록 하자.
반응형
'Python 코딩테스트' 카테고리의 다른 글
이진 탐색(이분 탐색): 백준 10816 파이썬 (0) | 2021.09.05 |
---|---|
이진 탐색: 백준 1920 파이썬 (0) | 2021.09.01 |
정렬: 백준 10814 파이썬 (0) | 2021.08.29 |
정렬: 백준 1181 파이썬 (0) | 2021.08.29 |
정렬: 백준 11651 파이썬 (0) | 2021.08.29 |