ftstokpark   5년 전

Java로 문제를 풀 때 런타임 오류가 나는데 이유를 모르겠습니다.

제가 문제를 푸는 논리를 잘 못 세운 것인지, 아니면 HashSet의 자료구조 상의 한계인 것인지 잘 모르겠습니다.

아시는 분 있으시면 알려주시면 감사하겠습니다.


참고로 문제를 푼 방식은

  1. input 입력 받음
  2. HashSet의 contains 함수를 이용하여 존재하는지 검사
  3. 존재한다면 정답 출력
  4. 존재하지 않으면 HashSet에 추가하고 다음 input에 대해 같은 작업 수행



isku   5년 전

HashSet의 문제는 아닌 것 같네요.

이 문제의 입력에서 2번째 줄은 최대 1부터 10000000까지의 수가 등장합니다.

공백을 포함해서 이를 계산해보면 약 8000만개의 문자가 등장하는 셈이고,

이를 실제로 1문자당 2byte인 char형 배열의 String에 담으려면 1억 6천만 byte가 필요한데 이는 160MB 입니다.

Heap 영역에 메모리가 부족해서 생기는 런타임 에러인 것 같습니다.

ftstokpark   5년 전

@isku

어떤 부분에서 문제가 되는지 알았습니다!

이제부터 문제를 해결해봐야죠 ㅠㅠ

감사합니다

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