Problem Solving (PS)/백준
백준 10989번 : 수 정렬하기3
ju_dev
2022. 10. 21. 23:56
문제.
https://www.acmicpc.net/problem/10989
10989번: 수 정렬하기 3
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
www.acmicpc.net
아이디어1 :
수는 10000 이하의 자연수가 입력되는데, 원소 개수는 최대 1000만개이다.
-> 원소의 종류 개수 <<< 전체 원소 개수 가 되어 같은 원소가 여러번 등장하면 계수정렬(radix sort) 사용
아이디어2 :
리스트는 원소 100만개를 기준으로 4MB
메모리 제한이 8MB이므로 최대 약 200만개까지 저장 가능
-> 입력받은 원소 전부(최대 1000만개)를 리스트에 저장 불가
-> 배열은 입력 받은 n의 개수를 저장하는 용도로만 사용
구현 :
import sys
N = int(input())
count = [0] * 10000
for i in range(N) :
n = int(sys.stdin.readline().strip())
count[n-1] += 1 # count[n-1]은 n의 개수이다.
for j in range(len(count)) :
if count[j] == 0 :
pass
else : # 업데이트 된 원소는 출력
for k in range(count[j]) :
print(j+1)