728x90
CodeUp 3004 데이터 재정렬
문제
프로그래밍 문제를 풀다 보면 뒤죽박죽인 N개의 데이터를 숫자의 크기 순으로 0 ~ N-1까지의 숫자로 재정렬 해야되는 경우가 종종 있다.
예를 들어 N=5 이고,
50 23 54 24 123
이라는 데이터가 있다면,
2 0 3 1 4
가 된다.
데이터를 재정렬하는 프로그램을 작성하시오.
시간 제한 : 1 초
메모리 제한 : 256 MB
입력
첫째 줄에 데이터의 개수 N이 입력된다. ( 1 <= N <= 50,000)
둘째 줄에 공백으로 분리되어 N개의 서로 다른 데이터가 입력된다. (값의 범위:0~500,000)
출력
N개의 데이터를 0 ~ N-1로 재정렬하여 출력하라.
입력 예시
5
50 23 54 24 123
출력 예시
2 0 3 1 4
도움말
50 23 54 24 123 에서
23, 24, 50, 54, 123 순서로 0, 1, 2, 3, 4 가 된다.
그리고 원래의 위치대로 출력한다.
풀이
n = int(input())
cnt = [0 for _ in range(500001)]
nums = list(map(int, input().split()))
for i in range(n):
num = nums[i]
cnt[num] += 1
for i in range(len(cnt)-1):
cnt[i+1] += cnt[i]
for i in nums:
print(cnt[i]-1, end = ' ')
728x90
'Algorithm(Python) > 정렬' 카테고리의 다른 글
[Algorithm] 백준 BOJ 1940 주몽(python 파이썬) (0) | 2022.09.27 |
---|---|
[Algorithm] 백준 BOJ 10817 세 수(python 파이썬) (0) | 2022.09.26 |
[Algorithm] 코드업 CodeUp 1709 내림차순 정렬(python 파이썬) (0) | 2022.09.24 |
[Algorithm] 코드업 CodeUp 1451 데이터 정렬(small)(python 파이썬) (0) | 2022.09.23 |
[Algorithm] 코드업 CodeUp 1420 3등 찾기(python 파이썬) (0) | 2022.09.22 |