[python/規格]10989:ソート番号3
質問する
に答える
この問題のメモリ制限が小さすぎてsortは使用できません.
また、for文では、
input
を使用して数字を入力しても、メモリオーバーフローのために問題を通過することはできません.したがって,sortではなく
intput
をint(sys.stdin.readline())
に置き換えることがこの問題の核心である.問題にはN行の数字があり、この数字は10000以下です.では、0番目の配列を含む10001の長さの配列を宣言し、数字1が2つである場合、配列[1]=2を指定して、数字1を2回印刷するのがより効果的です.
コードを見ると分かりやすいです.
コード#コード#
import sys
N = int(sys.stdin.readline())
arr = [0]*10001
for _ in range(N):
num = int(sys.stdin.readline())
arr[num] += 1 # arr[num]에 num이 들어온 개수 count
for i in range(10001):
# arr[i]에 숫자가 들어왔다면
if arr[i] != 0:
# arr[num]에 num이 들어온 개수 만큼 출력
for j in range(arr[i]):
print(i)
後記
sortはpython 3よりpython 3の性能が優れていると考えている.
メモリ使用量pypy 3はpython 3より多い!
問題では、メモリの制限が低すぎてメモリが超過しています.
同じコードをpython 3に変換して通過しました.
時間:pypy 3>python 3
メモリ使用量:pypy 3
Reference
この問題について([python/規格]10989:ソート番号3), 我々は、より多くの情報をここで見つけました https://velog.io/@yje876/python백준DP-10989-수-정렬하기-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol