[Algorithm][Python] 백준(BOJ) 18870 좌표 압축

최대 1 분 소요

[문제]

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

image image


풀이

[내 코드]

import sys

n = int(input())
input_arr = list(map(int, sys.stdin.readline().split()))
set_arr = sorted(set(input_arr))
dic = {set_arr[i]: i for i in range(len(set_arr))}

for i in input_arr:
    print(dic[i], end=' ')

image

좌표 압축이란?

여러 곳에 흩뿌려진 좌표들을 연속된 수들로 모아 압축하는 것을 말한다.


풀이

  • Set 함수를 통해 중복을 없앤 후, 정렬을 시킨 새로운 리스트(set_arr)에 저장한다.
  • Dict자료형을 사용하여 set_arr를 돌면서 key는 해당 값, value는 인덱스 값을 넣어준다.
  • 입력받은 리스트를 돌면서 순회 값과 dict에서 key값이 같은 value 를 출력한다.


💡주의

  • Dict 자료형을 사용하지 않고 list.index(i)로 사용하게 되면 시간복잡도 O(N)으로 시간초과가 난다.
  • 시간복잡도가 O(1)인 Dict 자료형을 사용하자!!

댓글남기기