문제풀이:
set을 이용하여 중복된 수를 제거한 후, 오름차순으로 정렬하였다.
그리고 처음에 주어진 배열의 원소를 새로 정렬한 배열에서 찾고 그 인덱스를 정답 배열에 추가하였다.
pypy로 통과하였다.
import sys
N = int(sys.stdin.readline())
X = list(map(int, sys.stdin.readline().split()))
XX = sorted(list(set(X)))
r = len(XX)-1
ans = []
for i in X:
left = 0
right = r
while (left<=right):
mid = (left+right)//2
if (XX[mid]==i):
ans.append(mid)
break
elif (XX[mid]>i):
right = mid-1
else:
left = mid+1
for i in ans:
print(i, end=" ")
'알고리즘💻 > 이분탐색&정렬&분할정복' 카테고리의 다른 글
BOJ 1448: 삼각형 만들기 (0) | 2021.07.19 |
---|---|
BOJ 10825번: 국영수 (0) | 2021.07.18 |
BOJ 2805번: 나무 자르기 (0) | 2021.01.29 |
BOJ 3758번: KCPC (0) | 2021.01.29 |
BOJ 1181번: 단어 정렬 (0) | 2021.01.29 |