카테고리 없음

[백준] 10989 수 정렬하기3 (Python 파이썬)

안드선생 2021. 10. 2. 14:24
반응형

https://www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

문제 설명

계수정렬(Counting Sort)을 이용해 정렬을 하는 문제이다.


풀이 과정

내장된 sort함수를 이용하면 메모리초과 오류가 난다.

계수 정렬을 이용해 정렬을 해야한다.

 

다만, 배열이 1칸이라도 더 많다거나

배열 두개를 사용하는 등 사소한 부분에서 메모리초과 오류가 발생하니

이부분을 유의해야 한다.

 

그리고 PyPy3로 돌렸을 때 메모리초과 오류가 난다면

Python3로 재채점을 해보길 권장한다.

import sys
n = int(input())

array = [0] * 10001
for i in range(n):
    tmp = int(sys.stdin.readline())
    array[tmp] += 1


for i in range(10001):
    if array[i] != 0:
        for j in range(array[i]):
            print(i)
반응형