문제
접근
list, set, dict를 모두 사용했다.
우선 입력받은 배열을 set으로 바꿔 중복을 없애준 후, 다시 list로 바꿔서 정렬한다.
해당 리스트를 이용해 딕셔너리를 구성하는데, key는 요소의 값, value는 요소의 인덱스로 한다.
이러면 특정 i가 배열에서 몇 번째로 작은 수인지 바로 확인할 수 있다.
그 후 원본 배열을 돌며 딕셔너리에 담아둔 값을 출력한다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
n = int(input())
arr = list(map(int, input().split()))
sortArr = sorted(list(set(arr)))
dic = {}
for idx, item in enumerate(sortArr):
dic[item] = idx
for item in arr:
print(dic[item], end = ' ')