Algorithm Study/Python

[백준 파이썬] # 10989 수 정렬하기 3

728x90
반응형

Silver V

# 10989 수 정렬하기 3

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

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

 

풀이

import sys

N = int(sys.stdin.readline())
li = [0] * 10001
for i in range(N):
    num = int(sys.stdin.readline())
    li[num] += 1

for i in range(len(li)):
    while li[i]:
        print(i)
        li[i] -= 1

 

후기

  • append를 사용하면 메모리 공간의 크기가 가변적이게 된다. python에서 가변적인 공간은 큰 메모리를 요구하게 된다

  • 메모리 사용량을 일정 크기로 고정시키면 메모리 초과 문제를 해결할 수 있다. 메모이제이션을 통해 값을 기록, 이를 이용한 연산은 메모리를 사용량을 줄인다.

  • 메모이제이션으로 활용한 리스트 공간 li는 10001까지가 되어야 한다.
    cf. 10000으로 설정하면 0~9999 까지 기록된다.