rndrnjs2003   6년 전

한줄 한줄 복사해서 하면 제대로 나오는데 한꺼번에 복사하면 이상하게 나옵니다.


예를 들어

6
(())())
(((()())()
(()())((()))
((()()(()))(((())))()
()()()()(()()())()
(()((())()(

를 복사해서 붙여넣으면 값이 모두 NO가 나오는데

(()())((()))

이런식으로 하나하나 붙여넣어주면 제대로 작동합니다. 뭐가 문제일까요?

djm03178   6년 전

애초에 코드에 문제들이 여럿 있습니다.

1. CreateNode 함수가 아무 것도 반환을 안 합니다. 그런데 Push 함수에 이 값을 전달하려고 하니, 전 아무리 돌려도 런타임 에러밖에 안 뜨네요.

2. Data는 그냥 char형 멤버인데 106번째 줄에서 free를 시도하고 있습니다.

3. scanf는 scanf_s와 달리 문자열의 길이를 인자로 넘겨주지 않습니다.

그리고 테스트 케이스 여러 개를 돌리다 보면 하나의 케이스가 끝나도 스택에 원소가 남아있는 경우가 있습니다. 그런 상태에서 바로 다음 케이스로 진행하면 기존의 원소를 가지고 시작하기 때문에 제대로 된 결과를 내지 못합니다.

rndrnjs2003   6년 전

djm03178

드디어 해결했습니다. 감사합니다 ㅠㅠ

  1. CreateNode 수정완료.
  2. DestroyNode 수정완료.
  3. scanf 문자열의 길이를 인자로 넘겨줘도 틀리지 않더라고요!

선생님 말씀대로 DestoryStack 함수에 문제가 있었습니다.

DestoryStack함수를 수정하니 정답나왔습니다. 감사합니다

djm03178   6년 전

가변 인자라서 넘겨주는 것 자체가 문제는 아니지만, 그냥 의미가 없습니다. 그 길이는 오로지 윈도우즈 전용의 scanf_s에서만 쓰입니다.

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