yoyob1223   2년 전

코드 작성 중에 실수가 있어서 계속 메모리 초과가 나오다가 실수를 발견해서 성공했습니다.

궁금한 것이 있습니다.

while문 안에 있는 if 조건식에서 tmp자리에 제가 초기 입력값을 그냥 숫자로 넣고 테스트한 것을 그대로 제출했더니 메모리초과가 낫던 것 같습니다.

if(a == 26)  -------->    if(a == tmp)

이렇게 고쳤더니 메모리 초과 문제가 해결됐습니다.

도대체 if문 조건식 안에 26을 넣은 것이 무슨 이유로 메모리 초과를 일으킨걸까요??

pmn0001   2년 전

a==26 일 때

2번 예제가 잘 돌아가던가요?

yoyob1223   2년 전

@pmn0001 네 잘 돌아갑니다. 값을 바꿀때마다 이클립스에서는 문제없이 잘 돌아가요

pmn0001   2년 전

a==26일 때 입력을 55로 넣어도 잘 돌아가나요.

yoyob1223   2년 전

pmn0001넵 문제없습니다...

pmn0001   2년 전

제가 a==26으로 코드를 작성하고 55를 입력하면 무한루프에 빠지던데

55넣으면 count가 뭘로 출력되던가요??

yoyob1223   2년 전

pmn0001 코드 바꿔서 다시 해봤습니다
55넣으면 count 3으로 나옵니다

<이클립스 console창>
입력: 55
출력: 3

pmn0001   2년 전

제출할 코드는 어떤 입력이 들어오더라도 정답을 출력해야합니다.

질문자님이 올려주신 코드는 그렇지 않은 것 같네요ㅎㅎ

그런 이유로 a==tmp로 했을때 맞았을겁니다.

yoyob1223   2년 전

pmn0001그러쵸 그게 맞긴합니다. 감사합니다!

djm03178   2년 전

무한 루프에 빠진 경우 a%10+""+b%10 이 루프를 돌 때마다 새로운 String 객체를 생성합니다. Java에서는 만들어진 객체가 소멸되는 시점을 정확히 알 수 없기에, 대개의 경우 계속해서 새 객체가 문제에서 주어진 메모리 제한을 초과할 때까지 생성되어 메모리 초과를 받게 됩니다.

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