bjh3311   3년 전

계속 채점중(20%)에서 런타임 에러가 나옵니다.

제 코드의 로직을 간단하게 말씀드리자면 

문장을 입력받으면 길이를 구한 후 문장의 처음부터 끝까지 for문을 통해 탐색하며 '(' 가 나올경우 스택에 1을 push '['가 나올경우 스택에 2를 push

')'나 ']'가 나올경우 pop을 해서 ')'의 경우엔 1이 ']'의 경우엔 2가 나오지 않을시 stack의 count값(스택의 크기를 표현 )을 -1000으로 둡니다.

-1000에는 별다른 의미는 없습니다. stack의 배열 크기는 문장의 길이가 100글자 이하라고하여 101로 설정하였습니다.

만약 맞게 나왔을 시에는 pop을 실행합니다. 마지막으로 '.'이 나왔을경우에 stack의 count값이 0이라면 yes를 출력 0이 아니라면 no를 출력합니다

push와 pop 메소드에 if(count>0)을 걸어놔서 문제가 ))(( 같이 나왔을때 count-1000인 상태에서 push를 실행하는 일은 없도록 했습니다.

정말 어디서 런타임에러가 나오는지를 모르겠습니다. 보통 배열을 잘못 참조하거나 함수가 탈출하지 못할떄?(계속 실행한다는 뜻 같습니다) 뜬다고 하는데

못 찾겠습니다. 질문을 해결해주신다면 정말 감사하겠습니다.

paraworld   3년 전

preview

입력의 종료조건을 무시하고 있습니다.

bjh3311   3년 전

입력의 종료조건이라면 '.' 로 알고있습니다.

그래서 for문에서 .을 종료조건으로 두도록 수정하고 t_case가 null일때는 아무것도 안하게 수정했습니다

근데 이제는 10%에서 시간초과가 나옵니다. 어떤게 문제인지 모르겠습니다 ㅠㅠ. 친절한답변 정말 감사한데 혹시 이것도 해결해주실수 있는지

조심스레 여쭤봅니다.

paraworld   3년 전

입력의 종료를 무시하고 있습니다.

if (t_case == ".")
                {
                    break;
                }

이렇게 바꾸시면 맞습니다.

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