해당 수 보다 작은 수는 몇가지 인가? 를 묻는 문제다.
일단 중복은 안봐도 되니까 set으로 압축시켜서 다시 list로 바꾼다음에 역순으로 정렬한다.
해당 list의 길이가 서로 다른 숫자의 개수다. K라고 하고
큰수부터 K-1, K-2, K-3, ... 이렇게 너보다 작은게 이만큼 있다 라는 값을 dict에 저장한다.
그리고 새로 list 하나 만들어서 정답을 차곡차곡 쌓는다.
이건 코드를 보는게 이해가 빠를 수도 있겠다.
N = int(input())
numbers = list(map(int, input().split()))
number_set = list(set(numbers))
number_set.sort(reverse=True)
answer_dict = {}
tmp = len(number_set) - 1
for num in number_set:
answer_dict[num] = tmp
tmp -= 1
answer = [0] * N
for i in range(N):
answer[i] = answer_dict[numbers[i]]
print(*answer)
'PS' 카테고리의 다른 글
[programmers] 최댓값과 최솟값 문제 - Python (0) | 2022.12.23 |
---|---|
[BOJ] 1323번 숫자 연결하기 문제 - Python (0) | 2021.04.06 |
[BOJ] 1931번 회의실 배정 문제 - Python (0) | 2021.03.25 |
[BOJ] 2565번 전깃줄 문제 - Python (0) | 2021.03.25 |
[BOJ] 1068번 트리 문제 - Python (0) | 2021.03.10 |