Python으로 FENCE를 풀 때 메모리 한도 초과때문에 질문드립니다

  • vio
    vio

    FENCE를 cpp로도 풀고 Python으로도 풀었는데
    Python으로 푼 답안을 개선하고 제출해보니 메모리 한도초과가 발생하고
    원래 통과했던 답안도 재채점을 해보니 메모리 한도초과가 발생하였습니다.
    그래서 메모리를 최소한으로 사용하도록 나름의 노력을 했는데 답이 잘 나오지 않아 조언부탁드립니다

    https://algospot.com/judge/submission/detail/221071
    이 답안에서 어떤점을 개선하면 메모리상한을 지킬 수 있을까요?

    여기서 더 나아가 리스트를 길이가 최대치인 20000인 것 하나만 생성하도록 generator를 이용해보았지만 이 답안은 또 RTE가 발생합니다. 로컬에서 예제를 input으로 했을 땐 통과합니다.
    https://algospot.com/judge/submission/detail/221083

    조언부탁드립니다.


    10년 전
6개의 댓글이 있습니다.
  • vio
    vio

    generator 사용한 풀이에서 버그가 하나 있어서 고쳤는데 이것도 메모리 제한 초과가 발생하네요..
    https://algospot.com/judge/submission/detail/221226


    10년 전 link
  • JongMan
    JongMan

    코드를 보니 딱히 메모리를 그렇게 많이 써야 할 것 같지 않은데.. 이상하네요. 메모리를 얼마나 쓰는지 확인하기 위해 메모리를 128mb 로 늘리고 재채점 해볼께요.


    10년 전 link
  • JongMan
    JongMan

    여전히 메모리 초과가 나네요. 뭔가 문제가 있을 수도 있는 것 같은데 한번 확인해 보겠습니다.


    10년 전 link
  • JongMan
    JongMan

    아.. 채점 시스템 쪽 문제였습니다. ㅜㅜ 불편을 드려 죄송합니다.

    샌드박스를 생성시 컴파일을 위해 메모리를 더 제공하는데, 이 메모리를 파이썬이 전부 사용하고 반환한 결과를 시스템이 보고 메모리륻 더 사용했다고 하는 것이었네요.

    실제 필요한 메모리보다 왜 더 사용하는지는 모르겠지만, 하여간 정정 후에 재채점하고, 그 후 다시 알려드리겠습니다. 불편을 드려 죄송합니다.


    10년 전 link
  • vio
    vio

    그렇군요. 문제가 발견되어서 다행입니다. 답변 감사드립니다 :)


    10년 전 link
  • JongMan
    JongMan

    안녕하세요, 해당 버그를 패치하였습니다.

    그런데 그 후에도 vio님의 제출이 메모리 리밋 에러가 났는데요.. 알고 보니 pypy 문제였습니다. pypy는 JIT 컴파일을 하기 위해 일반 파이썬이 필요한 것보다 훨씬 많은 메모리를 사용합니다. 때문에 버그를 고친 이후에도 메모리 초과가 났었고요.

    이 문제에서 중요한 것은 메모리 사용량이 아니니만큼, 이 문제 메모리 제한을 128mb로 올리도록 하겠습니다. 추후 대부분 문제들의 메모리 제한을 재 검토해야 할 것 같네요.

    링크하신 첫 번째 답안은 리저지했을 때 정답 처리되는 것을 확인했습니다.

    감사합니다.


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.