jae_coding

(백준 알고리즘 문제풀이)10989번 수 정렬하기 3 본문

알고리즘 문제/백준

(백준 알고리즘 문제풀이)10989번 수 정렬하기 3

재코딩 2022. 7. 19. 18:58
반응형

문제

 

문제 링크

 

코드

list사용 코드

import sys
input = sys.stdin.readline

n = int(input())
array = [0] * 10001

for _ in range(n):
    array[int(input())] += 1

for i in range(10001):
    num = i
    if array[i] != 0:
        for _ in range(array[i]):
            print(i)

dict사용 코드

import sys
input = sys.stdin.readline

n = int(input())
memo = dict()
lst = list()
for _ in range(n):
    temp = int(input())
    if temp not in memo:
        memo[temp] = 1
    else:
        memo[temp] += 1

for i in sorted(memo.items()):
    x, y = i
    for j in range(y):
        print(x)

느낀점

solve 브론즈라고 얕보다가 메모리 문제로 인해서 호되게 당한 문제이다. 그리고 왜인지는 모르겠지만 PyPy3에서는 똑같이 메모리 초과가 나타나지만 Python3 에서는 통과한 문제이다. 혹시 PyPy3에서 안되는 이유를 알고계신다면 공유해주시면 감사하겠습니다.

 

+ PyPy3 해결하기

PyPy3 내에서 print를 사용하는 것이 아닌 sys.stdout을 사용하면 문제가 해결된다.

import sys
input = sys.stdin.readline

n = int(input())
array = [0] * 10001

for _ in range(n):
    array[int(input())] += 1

for i in range(10001):
    num = i
    if array[i] != 0:
        for _ in range(array[i]):
            sys.stdout.write(str(i) + "\n")
반응형
Comments