본문 바로가기

자료구조 & 알고리즘 & cs/CodingTest

[python] 백준 10989번 - 메모리 초과 문제

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

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

 

간단한 문제였는데 정답비율이 너무 낮아서 당황했다.

간단한 sorting 문제였기 때문에 sort()를 사용하여 제출했는데

계속 메모리 초과 문제가 떴다.

 

<기존 코드>

 n = int(input())
 lst=[]
 
 for i in range(n):
     lst.append(int(input()))
     
 lst.sort()
 
 for i in range(len(lst)):
     print(lst[i])

 

구글링을 해본 결과

 

1. sort() 함수를 사용하면 메모리가 초과된다.

2. input 대신 sys를 이용하자.

 

 

import sys

n = int(sys.stdin.readline())
arr = [0] * 10001
for _ in range(n):
    num = int(sys.stdin.readline())
    arr[num] += 1     # 중복되는 수가 존재하므로 개수를 count하여 배열에 넣어준다.
    
for i in range(10001):
    if arr[i] != 0:
        for j in range(arr[j]):
            print(i)

 

 

728x90