작성
·
130
0
http://boj.kr/be195db38890481b9ca7ef38e786651e
선생님의 코드와 다른 부분은 스택을 매번 재선언하지 않고 재활용 할 수 있게 비워둔다는 점 뿐인 것 같습니다.
gcc로 컴파일 했을 때, 2회 이상의 입력에서 2회차 반복 시에 아무런 출력도 하지 않고 그대로 프로그램이 강제 종료됩니다. 백준에는 런타임 에러라고 뜨는데,
입력과 관련된 문제일까요? 아니면 스택을 재선언 하지 않고 매번 비워두는 코드에서 런타임 에러가 발생한 것일까요..?
조언이 필요합니다. 감사합니다.
답변 1
1
안녕하세요 01님 ㅎㅎ
이렇게 한번 바꿔보시겠어요?
else if(input[i] == ')')
{
if(stk.size() && stk.top() == '(') stk.pop();
stk.top()이라는 것은 스택의 가장 앞부분을 참조하는 것을 말합니다.
이 때는 방어코드가 드가야 합니다.
스택의 앞부분을 참조할때 ~ 아 정말 스택에 어떤 것이 담겨있나? 라고 확인하는 stk.size() 체크하는 게 들어가야 합니다.
이 방어코드가 없다면 스택에 아무것도 없는데 top()을 참조하게 되서 에러가 발생할 수도 있게 되는 것이죠.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.