5397번 - 키로거
제가 검사해본 문제들은 다 맞게 출력되는거 같은데 틀렸다고 나옵니다..
arr에 문제 문자열을 받고요.
배열 stack에다가 하나씩 넣고요, '<' 나올시 stack에 top에 있는 문자들을 배열 queue에다가 넣고요
'>'나올시 배열 queue에 0번째 있는 것들을 하나씩 다시 배열 stack의 top부분으로 옮깁니다.
그러다가 마지막에 stack이랑 queue를 합치고 배열 stack을 출력하는 함수입니다.
여러가지 경우의 수를 다 해보았는데..오류가 없었는데 어디가 틀린지 모르겠습니다ㅠㅠ
한번만 봐주세요!!!
테스트케이스
-
에서 오류나네요
빈 스택일때 처리해주셔야 될거같아요
답변 감사드립니다.
말씀듣고 밑에 68, 69번째 줄 코드를
원래코드 : else if (arr[j] == '-') s_pop();
바꾼코드 : else if(arr[j]=='-')
{ if (top > 0) s_pop(); }
이런식으로 바꾸어서 - 하나만 입력하였을때는 오류가 안 나는데... 그래도 계속 틀렸습니다 가 뜨네요ㅠㅠ
혹시 다른 문제점이 있는지 더 살펴 봐 주실수 있나요?
테스트 케이스
A<<S-D-SDA<S>>-A<-<<>AAQW><EQ-
에서
답은
SDAAQWESA인데
님 코드로 돌려보니까
SDAAQWEAS가나오네요
계속 봐주셔서 진짜 감사드려요
말씀주신대로 저럴 경우 오류가 떠서 밑에와 같은 코드로 다시 정정 하였습니다. 그런데 이번에 문제는 시간초과가 뜨네요...
시간을 어디서 줄일 수 있는지 잘 모르겠습니다...
그리고 한가지만 더 질문하자면, 혹시 제 코드 적용시 오류가 뜨는 예시를 어떻게 찾으셨나요????? 혹시 일일이 다 해보셨나요..??ㅠㅠ
오류 예시를 찾는 다른 방법이 있다면 알려주시면 감사드리겠습니다.
혹시나 해서 밑에 코드로 변경해 보고 다시 해보았는데 역시나 시간초과가 뜨네요..
바뀐 코드 부분은 5~7번째 줄 배열 arr, stack, queue를 0으로 초기화하는것을 없애주었고,
93~100번째 줄 memset 함수를 사용하는 것을 없애 주었습니다.
이게 과연 시간을 줄일 수 있는 방법이되는지는 잘 모르겠으나 바꾼 후에도 역시 시간초과가 뜹니다..ㅠㅠ
감사합니다.
댓글을 작성하려면 로그인해야 합니다.
diction01 8년 전
제가 검사해본 문제들은 다 맞게 출력되는거 같은데 틀렸다고 나옵니다..
arr에 문제 문자열을 받고요.
배열 stack에다가 하나씩 넣고요, '<' 나올시 stack에 top에 있는 문자들을 배열 queue에다가 넣고요
'>'나올시 배열 queue에 0번째 있는 것들을 하나씩 다시 배열 stack의 top부분으로 옮깁니다.
그러다가 마지막에 stack이랑 queue를 합치고 배열 stack을 출력하는 함수입니다.
여러가지 경우의 수를 다 해보았는데..오류가 없었는데 어디가 틀린지 모르겠습니다ㅠㅠ
한번만 봐주세요!!!