3. 후위 표기식 만들기
미해결
파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드는 간략하게 필요한 부분만 쓰겠습니다. for x in a: 1. if x.isdecimal(): res+=x else: 2. if x=='(': stack.append(x) 3. elif x=='*' or x=='/': while stack and (stack[-1]=='*' or stack[-1]=='/'): res+=stack.pop() stack.append(x) 4. elif x=='+' or x=='-': while stack and stack[-1]!='(': res+=stack.pop() stack.append(x) 5. elif x==')': while stack and stack[-1]!='(': res+=stack.pop() stack.pop() 질문 3+5*2/(7-2) 에서 가장 앞에 있는 +는 1, 2, 3, 4, 5 중에 어디에 들어 나가요? 정리 x=3은 숫자이므로 1번 res에 들어갑니다. x= "+"일 때 (현재 stack은 텅 비어 있는 상태) +는 else:에 들어 갑니다. +는 '(' 가 아니므로 2번 pass +는 * 또는 /가 아니므로 3번 pass +는 +에 해당 하나 while stack 에서 stack에 데이터가 없으므로 while 조건 탈락 -> 4번 pass +는 ) 가 아니므로 5번 pass 코드 짜려고 구성했을 때 가장 먼저 막히는 것이 비어 있는 stack에 첫 연산자를 어떻게 집어 넣느냐 였습니다. 부득이하게 들여쓰기가 안되는 점은 양해를 구합니다.
- 후위
- python
- 중위
- 코테 준비 같이 해요!





