본문 바로가기
백준

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

by 헤이즐넛 좋아하는 개발자 2024. 2. 24.

메모리 초과 오류가 발생했다. 생각해보면 N이 10,000,000까지 가능하기 때문에 list의 길이가 너무 커져서 메모리 초과 오류가 발생한 것으로 생각된다.

# 메모리 초과 발생
import sys
input = sys.stdin.readline

n = int(input().rstrip())
lst = []

for _ in range(n):
    num = int(input().rstrip())
    lst.append(num)

lst.sort()

for i in lst:
    print(i)

따라서 list의 길이를 어떻게 하면 줄일 수 있을까 고민했다. 둘째 줄부터 주어지는 수는 최대가 10,000이므로 이를 list의 길이로 활용하게 되면 메모리 초과 오류를 없앨 수 있겠다고 생각해 코드를 구현했다.

import sys
input = sys.stdin.readline

n = int(input().rstrip())
lst = [0] * 10001

for _ in range(n):
    num = int(input().rstrip())
    lst[num] += 1

for i in range(10001):
    l = lst[i]
    if l != 0:
        for j in range(l):
            print(i)