4:22 부터 나오는 else 문이 논리상 틀렸어요. operators의 top의 연산자 우선순위가 현재 연산자보다 작아질 때까지 반복해서 pop 시켜야 말이되네요. 반례로 A+B*C-D/E 를 한다면 ABC*+DE/- 가 나와야 하지만 한번만 pop해버리고 바로 넣어버리면서 ABC*DE/-+가 나와요
while (not operators.is_empty()) and priority[operators.peek()] >= priority[i]: result.append(operators.pop()) operators.push(i) 로 수정해야 됩니다 그럼 굳이 위에 if 문도 필요없겠네요
4:22 부터 나오는 else 문이 논리상 틀렸어요. operators의 top의 연산자 우선순위가 현재 연산자보다 작아질 때까지 반복해서 pop 시켜야 말이되네요. 반례로 A+B*C-D/E 를 한다면 ABC*+DE/- 가 나와야 하지만 한번만 pop해버리고 바로 넣어버리면서 ABC*DE/-+가 나와요
while (not operators.is_empty()) and priority[operators.peek()] >= priority[i]:
result.append(operators.pop())
operators.push(i) 로 수정해야 됩니다 그럼 굳이 위에 if 문도 필요없겠네요
얼마전 cos pro 시험을 쳤는데 이 역폴란드 표기법에 대한 문제가 나와 당황했습니다. 지금 봐도 어질어질 하네요. 천천히 들여다 보렵니다.
도움 많이 됐습니다. 감사합니다