elshakzldk   4년 전

첫번쨰 코드<1>으 메모리초과가 나서 사실상 이제막 코딩을 시작해서메모리 초과가나는 범위도 잘 모르겠고... 초과가 생기면 어떤 식으로 코드를 수정해 나가야 하는지에 대해서도 막막해서 조금의 조언을 구해보고자 글을 씁니다 ㅠㅠ

두번째 코드<2>는 <1>의 메모리 초과를 나름대로 해결해 보고자 해서 두개의 재귀함수로 구현을 해봤는데 둘의 코드다 정상적으로 작동은 되지만 <2>의 코드는 시간 초과가 나네요ㅠㅠ 재귀호출은 빠르다고 알고 있었는데 충격이 큽니다... 어떤식으로 코드를 수정해 나갈 수 있는지 방향성을 재시해 주셨으면 합니다! 정답을 구걸 하고 싶진 않기도 하지만 조언 없이는 해결하기 힘들 것 같네요ㅠㅠ 그리고 이렇게 매모리크기? 속도? 를 측정하고 예측하고 하는건 어떻게 공부 해야하는지 궁금합니다!

jintak0401   4년 전

코드<1> 의 경우 입력으로 1000000000 과 같이 매우 큰 값이 들어가면 재귀함수는 1000000000 --> 999999999 --> .. --> 2 --> 1 순서로 돌아야 하므로 깊이가 너무 과하게 깊어집니다. 그래서 메모리 초과가 난 것이구요.

코드<2> 의 경우 있는 숫자들을 일일히 세주는 것 같은데, 그렇기 때문에 시간초과가 난 것으로 보입니다. 이 문제는 일일히 세주는 것이 아닌, 나올 숫자를 미리 예측(?)해서 구해나가야 합니다.

321 를 입력으로 받는 경우에 대해 얘기하겠습니다.

1의 자리에 0 이 들어갈 수 있는 경우는 10, 20 ,..., 320 까지 32개, 1의 경우 1, 11, ..., 321 까지 33개 ...  이런 식으로 일일히 세지 않고 구해나갈 수 있습니다.

저는 다른 방법으로 풀었는데 위의 방법이 더 간단한거 같더라구요

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