0702leesj   2년 전

다 long으로 바꿨고,
ArrayList가 버티질 못하기에 HashMap으로 바꿔주었습니다.
그런데 질문게시판을 보던중에


100000000
5
100000000 L
100000000 L
200000000 L
199999999 L
199999999 L


이 예시를 보게 되어 돌렸더니, 

Exception in thread "main" 
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"

에러가 뜹니다 ㅠㅠ 어떻게 해결해야할지 감이 안오는데

도와주실 천사분 계실까요...ㅠㅠ

다른 작은 케이스들은 다 답이 맞게 나오는 것 같아요!


bupjae   2년 전

이 알고리즘대로라면 첫 번째 Command를 처리하는데만 해도 필요한 메모리의 양이 100000000 * (8+8) = 약 1.5GB 입니다.

(단, 이 계산은 Snake 를 그대로 HashMap에 저장하는 것으로 가정했습니다. 지금과 같이 String으로 변환한 뒤 HashMap에 저장하게 된다면 실제로는 더 많은 용량이 필요할 가능성이 큽니다)


이 문제의 핵심은 뱀의 이동 경로를 저장할 자료구조를 고안하는 것입니다. 한칸 한칸 저장해서는 메모리 초과를 피할 수 없습니다.

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