성장일기

[python] 백준 10989 - 수 정렬하기 3 본문

알고리즘 문제

[python] 백준 10989 - 수 정렬하기 3

김몽몽 2022. 1. 14. 11:38

Q> N개의 수가 주어졌을 때,

오름차순으로 정렬

 

🧨메모리가 매우매우 빡빡하다

1. counting sort를 이용하자(아래 블로그를 참고했음)

https://elrion018.tistory.com/37

 

카운팅 정렬(counting sort) - 정렬 알고리즘, 파이썬

지금까지 배워온 정렬은 두 수의 대소를 '비교'하는 과정을 거쳐 정렬하는 comparison sort였습니다. 두 수를 반복적으로 비교해 정렬하는 comparison sort는 아무리 알고리즘을 잘 짜도 계산 복잡성이 O(

elrion018.tistory.com

2. pypy3로 실행할 경우 print말고 sys.stdout.write를 쓰자

3. 채점도 매우 느리니 마음을 졸이지 말자😥

 

import sys
input=sys.stdin.readline

n=int(input().rstrip())

num=[0]*10001   #메모리제한, counting sort
for x in range(n):
  a=int(input().rstrip())
  num[a]+=1  #자리에 1을 더해줌


for i in range(1,10001):
  if num[i]!=0:  #0이 아닌것(수가 들어온 것들)
    for j in range(num[i]):  #개수만큼
      print(i)  #i를 프린트해줌