diction01   8년 전

제가 검사해본 문제들은 다 맞게 출력되는거 같은데 틀렸다고 나옵니다..


arr에 문제 문자열을 받고요.

배열 stack에다가 하나씩 넣고요, '<' 나올시 stack에 top에 있는 문자들을 배열 queue에다가 넣고요

'>'나올시 배열 queue에 0번째 있는 것들을 하나씩 다시 배열 stack의 top부분으로 옮깁니다.

그러다가 마지막에 stack이랑 queue를 합치고 배열 stack을 출력하는 함수입니다.

여러가지 경우의 수를 다 해보았는데..오류가 없었는데 어디가 틀린지 모르겠습니다ㅠㅠ

한번만 봐주세요!!!




tols91   8년 전

테스트케이스

-

에서 오류나네요

빈 스택일때 처리해주셔야 될거같아요

diction01   8년 전

답변 감사드립니다.

말씀듣고 밑에 68, 69번째 줄 코드를

원래코드 :      else if (arr[j] == '-')
                         s_pop();

바꾼코드 :     else if(arr[j]=='-')

                     {
                          if (top > 0)
                          s_pop();
                      }

이런식으로 바꾸어서    -   하나만 입력하였을때는 오류가 안 나는데... 그래도 계속 틀렸습니다 가 뜨네요ㅠㅠ

혹시 다른 문제점이 있는지 더 살펴 봐 주실수 있나요?


tols91   8년 전

테스트 케이스

A<<S-D-SDA<S>>-A<-<<>AAQW><EQ-

에서 

답은 

SDAAQWESA인데

님 코드로 돌려보니까

 SDAAQWEAS가나오네요

diction01   8년 전

계속 봐주셔서 진짜 감사드려요

말씀주신대로 저럴 경우 오류가 떠서 밑에와 같은 코드로 다시 정정 하였습니다. 그런데 이번에 문제는 시간초과가 뜨네요...

시간을 어디서 줄일 수 있는지 잘 모르겠습니다...

그리고 한가지만 더 질문하자면, 혹시 제 코드 적용시 오류가 뜨는 예시를 어떻게 찾으셨나요????? 혹시 일일이 다 해보셨나요..??ㅠㅠ

오류 예시를 찾는 다른 방법이 있다면 알려주시면 감사드리겠습니다.




diction01   8년 전

혹시나 해서 밑에 코드로 변경해 보고 다시 해보았는데 역시나 시간초과가 뜨네요..

바뀐 코드 부분은 5~7번째 줄 배열 arr, stack, queue를 0으로 초기화하는것을 없애주었고,

93~100번째 줄 memset 함수를 사용하는 것을 없애 주었습니다.

이게 과연 시간을 줄일 수 있는 방법이되는지는 잘 모르겠으나 바꾼 후에도 역시 시간초과가 뜹니다..ㅠㅠ

감사합니다.


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