- 문제의 표현을 처음 봤을 때 한 번에 이해하지 못했다. 결국 노트에 그려가면서 여러 번 해 본 결과 이해할 수 있었고 여기서 비내림차순은 오름차순이 아니라는 것을 기억할 필요가 있다.
import sys
input = sys.stdin.readline
N = int(input())
A = list(map(int, input().strip().split()))
# 배열 A를 오름차순 정렬하여 리스트로 반환
sorted_A = sorted(A)
result = []
# 배열 A의 원소를 기준으로
for i in A:
# 배열 A의 원소가 오름차순 정렬된 배열에서 몇 번째에 위치하는가?
result.append(sorted_A.index(i))
# 배열 A에 중복된 원소가 존재하면 index함수가 최초로 등장하는 시점의 인덱스를 반환하므로
# 한 번 탐색한 값은 재탐색을 진행하지 않도록 값을 0으로 수정(배열 A는 자연수이므로 0이 나올 수 없기 때문에)
sorted_A[sorted_A.index(i)] = 0
print(*result)