[BOJ] 10989번 수 정렬하기 3 (Python)

천호영·2022년 3월 17일
0

알고리즘

목록 보기
2/100
post-thumbnail

첫 시도

N=int(input())

arr = [int(input()) for _ in range(N)]

counts = [0 for _ in range(max(arr)+1)]

for num in arr:
  counts[num]+=1

for i,count in enumerate(counts):
  for _ in range(count):
    print(i)

주어지는 수 10,000,000개를 리스트에 저장해두지 않는 방향으로 가서 메모리를 절약해야 겠다고 생각하여 다음과 같이 변경했지만 시간초과가 발생

N=int(input())

counts = [0 for _ in range(10001)]

for _ in range(N):
  counts[int(input())]+=1

for i,count in enumerate(counts):
  for _ in range(count):
    print(i)

input()의 시간이 너무 느린게 원인인 것 같아 sys.stdin.readline()으로 바꾸어 통과했다.

import sys
N=int(input())

counts = [0 for _ in range(10001)]

for _ in range(N):
  counts[int(sys.stdin.readline())]+=1

for i,count in enumerate(counts):
  for _ in range(count):
    print(i)

이때, python3가 아닌 pypy3에서는 메모리 초과가 발생한다.

profile
성장!

0개의 댓글