코딩테스트 | python/백준

[백준 | python] 좌표 압축

iemxl 2024. 5. 9. 18:07

단계별로 풀어보기 > 정렬 > 좌표 압축

 

 

좌표 압축 Lv.실버2

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다.
X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.

 

 

첫 번째 풀이 :     시간초

n = int(input())
lst = input().split()
result = []
for i in lst:
    n = 0
    for j in lst:
        if float(i) > float(j):
            n+=1
    result.append(n)
print(*result)
  • for문을 두 개 써서 시간초과 

 

 

 

 

두 번째 풀이:     100점

n = int(input())
lst = list(map(int, input().split()))
lst_sort = sorted(list(set(lst)))
dic = {lst_sort[i] : i for i in range(len(lst_sort))}

for i in lst:
    print(dic[i], end = ' ')
  • 정렬과 중복을 뺀 리스트를 새로 만들고 dic에 입력받은 수들의 키를 만들어 준다.
  • 새로운 리스트의 순서 인덱스를 순서에 맞게 적어주면 된다.
  • 파이썬 내에 정렬 라이브러리를 사용하는 문제