https://www.acmicpc.net/problem/18870
import sys
n = int(sys.stdin.readline())
num = list(map(int, sys.stdin.readline().split()))
num_set = sorted(list(set(num)))
for i in num:
print(num_set.index(i), end=' ')
숫자를 num으로 입력받아 리스트로 만들고
중복을 제거하고 정렬한 리스트를 하나 더 만들어서 그 리스트의 인덱스를 출력하도록 했다
근데 시간 초과가 떴다.... 인덱스를 하나하나 찾는데 시간이 오래 걸려서 그렇다고 한다
** 리스트.index(i) : 시간 복잡도 O(n) **
import sys
n = int(sys.stdin.readline())
num = list(map(int, sys.stdin.readline().split()))
num_set = sorted(list(set(num)))
num_dic = {num_set[i] : i for i in range(len(num_set))}
for i in num:
print(num_dic[i], end=' ')
그래서 딕셔너리를 이용했다
딕셔너리는 {key:value}로 값을 저장하는데 key는 중복 허용 X
딕셔너리에 key값을 num, value값을 더 작은 숫자의 개수로 넣어주고 num을 돌면서(key - num) 값을 출력했다!
** 딕셔너리 : 시간 복잡도 O(1) **
'알고리즘 > 백준' 카테고리의 다른 글
백준 11047: 동전 0 (Python) (0) | 2021.09.25 |
---|---|
백준 11399: ATM (Python) (0) | 2021.09.25 |
백준 10814: 나이순 정렬 (Python) (0) | 2021.09.15 |
백준 1181: 단어 정렬 (Python) (0) | 2021.09.14 |
백준 11651: 좌표 정렬하기 2 (Python) (0) | 2021.09.13 |