nicolao00   2년 전

출력은 맞게 나오는데 메모리 초과가 나네요..

다른분들 코드랑 비교해봤을때 딱히 메모리 공간을 더 쓴다는 생각은 안드는데 ....

왜 메모리초과가 나는건가요? ㅜㅜㅜㅜㅠㅠㅠ 도저히 모르겠어서 질문드립니다!

아 혹시 중첩 if문을 많이쓰는거랑 메모리랑 관련이 있나요.....? 없을것같은데 ..

bss011202   2년 전

문제의 예제 입력1 을 해봤는데 결과가 다르게 나오네용;

1. 13라인부터 나오는 while 문 내에서 max값을 건드리는 부분은 하나도 없는게 약간 문제사항으로 의심됩니다! (max는 "마지막으로 스택에 넣었던 값"을 의미하는것으로 이해했습니다)

2. 28라인의 두 코드가 의도한대로 작동하지 않을 수 있습니다. 가령, 16라인에서 +를 다 해준 직후 바로 28라인으로 넘어가면서 스택에서 항목 하나를 빼버릴수도 있으니깐요!

bss011202   2년 전

위의 2번에 언급한 28라인은 원래 24라인을 말할려고 한건데 잘못말했네요 죄송합니다 :)


3. (만약 max가 "마지막으로 스택에 넣었던 값" 을 의미하는것이 맞다면)

19라인의 if문은 

스택이 [1,2,3,4] 순서로 쌓였고 이번 순서때 입력이 2(=top)로 들어왔을때, max값은 4일것이므로

s.top() = 4, top = 2가 되어 중간에 종료를 하도록 작동할것입니다.

이러한 부분도 오작동으로 연결될 수 있을것 같습니다! 확인해주세용 :)

nicolao00   2년 전

@bss011202 감사합니다 ㅎㅎ 덕분에 해결했어요!

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