백준 18870 좌표 압축

Hyun·2022년 9월 22일
0

코딩테스트

목록 보기
5/66

https://www.acmicpc.net/problem/18870

실패 이유 : 시간초과

N = int(input())

numbers = list(map(int, input().split()))
numbers_set = sorted(list(set(numbers)))

dic = {numbers_set[idx]: idx for idx in range(len(numbers_set))} 
# dictionary 자료형 사용하여 O(1) 시간 복잡도

for i in numbers:
    print(dic[i], end=" ")
  • 이중 for문을 사용해 문제를 풀이하면 시간초과 발생
    • 입력 숫자들로 집합을 만들어 중복을 제거하고 오름차순 정렬
    • dictionary 자료형에 정렬된 숫자 집합값을 key로, 숫자 집합값의 인덱스를 value로 저장
    • 입력 숫자 리스트를 돌면서 dictionary key 값에 해당하는 value를 출력
  • 이전 풀이 O(n^2) 에서 O(n)으로 풀이 간결화

출처 : https://gudwns1243.tistory.com/52

0개의 댓글

관련 채용 정보