gunflake09   6년 전

채점 18%에서 오류가 발생해서 틀렸다고 하는데, 어떤 부분이 틀린지 잘 모르겠습니다.


후위표기법 구성은

1. 연산자, 괄호, 알파벳으로 구분한 후
2. 연산자가 들어왔을 때, stack이 비어있으면 현재 연산자를 Stack에 추가
2-1. 연산자가 '+', '-' 일 경우, stack의 top이 '*', '/' 이라면
       '(' 혹은 스택이 빌때까지 pop을 하여 string에 추가한다. 그 후 스택에 현재 연산자를 추가한다
2-2. 연산자가 '*', '/'일 경우, stack에 추가한다.
3-1. 괄호가 '('일 경우 스택에 추가한다.
3-2 괄호가 ')'일 경우 '('를 만나기 전까지 pop하여 string에 추가한다. 그 후 '(' 를 스택에서 제거한다.

이렇게 알고리즘을 구현했습니다. 코드에 주석 달아놨습니다. 
어떤 부분에서 반례가 생기는지 잘 모르겠습니다.

a+b*c+d 인 경우 abc*+d+ 로 출력됩니다.

질문 해결좀 부탁드립니다. 감사합니다


ho94949   6년 전

A*B*C*D를 입력으로 넣었을 때 ABCD***이 나오네요

AB*C*D*가 나와야 할 것 같습니다.



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