해결된 질문
작성
·
200
0
안녕하세요 선생님,
http://boj.kr/2555600284cb48a2a7065e44862058b4
http://boj.kr/fdd2eb2834dd4f45a3f6f6c95feac99d
위가 메모리 초과가 발생한 코드, 아래가 통과한 코드입니다.
해당 문제를 복습하기 위해 다음날 다시 코드를 짜봤는데, 메모리초과가 발생하여 통과된 코드와 비교해봤지만 두 코드 사이의 유의미한 차이를 찾지 못하여 무엇이 문제인지 잘 모르겠습니다. 또 메모리 초과는 어떤 환경에서 발생하며, 정확히 메모리 초과가 어떤 건지도 간략하게 설명해주시면 감사하겠습니다.
좋은 강의 늘 감사합니다.
답변 2
0
안녕하세요 영수님 ㅎㅎ
for(int i = start + 1; i<_chicken.size(); i++){
v.push_back(i);
combi(-1,v);
v.pop_back();
}
return;
지금 이걸 보시면 combi라는 재귀함수가 더 많이 호출되는 것을 볼 수 있습니다.
이경우 치킨^m 만큼 더 호출되게 될 겁니다.
이 차이가 있습니다.
많은 재귀함수 호출 -> 메모리초과 를 유발합니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다.
김영수님, 메모리 초과 문제는 프로그램이 할당받은 메모리 한계를 초과하여 사용했을 때 발생합니다. 주로 큰 크기의 배열을 할당하거나, 재귀 호출이 지나치게 많을 때, 또는 무한 루프에 의해 계속해서 메모리를 할당하게 될 때 이런 상황이 발생할 수 있습니다.
관련된 기존의 답변 중 유사한 경우를 찾아보았으나, 질문에 포함된 소스 코드의 내용으로는 직접적인 해결책을 제안하기 어려웠습니다. 그러나 과거 비슷한 문제를 겪고 해결한 다른 수강생의 질문에 대한 강사님의 답변을 찾았으므로, 그 내용을 공유드립니다. 이러한 답변들은 코드의 일부 버그나 논리적 오류를 찾는 데 도움이 될 수 있으며, 메모리 초과 문제에 대한 일반적인 이해 및 해결 방법을 제공할 수 있습니다.
위 답변들을 참조하여 코드를 다시 검토해보시고, 비슷한 로직의 처리 방식을 확인해보시면 도움이 될 것으로 생각합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다!