hdnua   9년 전

윤성우 씨의 열혈 자료구조에서 봤던 내용을 바탕으로 (그대로 썼다는 말은 아니고)

후위 표기식을 구현해봤는데, 다음과 같은 입력은 모두 정상적으로 나옵니다.

test using ideone
  • Success time: 0 memory: 5108 signal:0
  • ((A+B*C)): ABC*+
  • Success time: 0 memory: 5100 signal:0
  • (A+B)*(C-D)/(E*F)+G: AB+CD-*EF*/G+
  • Success time: 0 memory: 5104 signal:0
  • (A+B*C-D): ABC*+D-
  • Success time: 0 memory: 5100 signal:0
  • (A+B)*C: AB+C*
  • Success time: 0 memory: 5104 signal:0
  • A/B-C: AB/C-
  • Success time: 0 memory: 5096 signal:0
  • A+B*C: ABC*+
  • Success time: 0 memory: 5108 signal:0
  • A+B-C: AB+C-
  • Success time: 0 memory: 5108 signal:0
  • A+B: AB+

일단 알아보시기 쉽도록 주석도 약간 넣었습니다. 어떤 입력에서 오류가 날까요?

컴파일러를 개발하는 중이라 후위 표기식 문제는 간단히 맞출 수 있을 거라고 생각했는데 도무지 모르겠습니다.


+, 어떤 입력에서 오류가 나는지를 묻는 질문은 매번 제가 제대로 테스트해보지 않았다는 생각이 들어 약간 죄송한 마음이 듭니다..

hdnua   9년 전

다른 커뮤니티에서 답을 얻었는데, A+(B+C)*D 입력에서 오류가 있었습니다.

닫는 괄호가 연산자로 온 경우와 다른 연산자가 온 경우에 대해 스택에 들어있는 ( 연산자의 처리를 달리 해야 하는군요..

좋은 정보 얻었습니다.

psychobabo   7년 전

덕분에 맞았네요~ 감사합니다!

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