단계별로 풀어보기 > 정렬 > 좌표 압축
좌표 압축 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에 입력받은 수들의 키를 만들어 준다.
- 새로운 리스트의 순서 인덱스를 순서에 맞게 적어주면 된다.
- 파이썬 내에 정렬 라이브러리를 사용하는 문제
'코딩테스트 | python > 백준' 카테고리의 다른 글
| [백준 | python] #9251 LCS (DP) (0) | 2024.05.10 |
|---|---|
| [백준 | python] 24479 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2024.03.21 |
| [백준 | python] 2606 바이러스 #BFS #DFS (0) | 2024.03.21 |
| 백준 단계별로 풀기(그리디 알고리즘) (0) | 2023.06.28 |
| 백준 단계별로 풀기(집합과 맵) (0) | 2023.06.28 |