미해결
파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
3. 후위 표기식 만들기
코드는 간략하게 필요한 부분만 쓰겠습니다.for x in a:1. if x.isdecimal():res+=xelse: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에 첫 연산자를 어떻게 집어 넣느냐 였습니다.부득이하게 들여쓰기가 안되는 점은 양해를 구합니다.