yopark   2년 전

set()을 쓰든지 비트마스킹을 쓰던지 둘다 짜봤는데 메모리 초과로 계속 안 되길래, PyPy3를 Python 3로 바꿔서 내니까 되네요

PyPy3가 Python 3보다 더 시간을 줄일 수 있다고 들었는데, 메모리는 오히려 더 많이 사용하는 걸까요?

그냥 이제부터 다른 문제도 PyPy3로 내지 말고 Python 3으로 내는게 유리할까요? 

lambda   2년 전

https://www.acmicpc.net/blog/v...

여기서 pypy부분을 읽어보세요

yopark   2년 전

좋은 글 감사합니다. 한번 정독했습니다! 

재귀를 깊게 하지 않는다면, PyPy3을 쓰는게 시간면에서 유리하군요. 

print 대신 sys.stdout.write를 사용하면 메모리 문제가 줄어든다고 나와있길래 그렇게도 내보았지만 메모리 초과가 계속 나서 아쉬웠습니다. 

하지만 올려주신 글 보면서 플래티넘 단계 문제부터는 최적화를 위해 사용 언어조차도 바꿀 능력이 있어야겠다는 다짐을 하고 가네요 ㅎㅎ 감사합니다! 파이썬 말고 C++ 도 연습해야겠습니당

lambda   2년 전

https://www.acmicpc.net/source...

print를 sys.stdout.write로만 바꿨을 때 통과됩니다.

https://www.acmicpc.net/source...

출력함수를 만들어서 하면 메모리초과가 나오는데 정확한 이유는 모르겠습니다

azaraks   2년 전


print만큼 메모리를 많이 쓰진 않으나 stdout.write도 속도를 위해 메모리 정리를 하지 않는데 2번 쓰셔서 그런걸로 보입니다.
sys.stdout.write(str(a) + '\n')
으로 쓰거나, 

if 0 == _ % 적절하게_큰_수: gc.collect_step()
를 for문 안의 첫째줄로 넣어 적당한 주기마다 gc를 해주면 잘 실행할 수 있습니다.

yopark   2년 전

아하 두번 써서 그렇게 된 거였군요!! 

정말 감사합니다 ㅎㅎㅎ 많이 배우고 갑니다

댓글을 작성하려면 로그인해야 합니다.