SWEA 1222. 계산기1(Python)(D4)

Wjong·2023년 1월 29일
0

swea

목록 보기
8/36

후위표기식을 이 문제로 인해 처음 접했다..!
+밖에 없는 첫 후위표기식 문제라 쉬웠다.
입력받은 숫자와 +로 이루어진 문자열에서
먼저 중위표기식에서 후위표기식으로 변환해준다.

  • 숫자인 경우, postfix에 출력
  • +인경우
    - 스택이 비었을 경우 스택에 i를 push
    • 스택이 차있을 경우, postfix에 stack의 값을 pop하고 스택에 i를 push
  • 입력을 다 읽고 난 뒤, 스택에 남아있는 내용을 postfix로 출력

그리고 변환된 후위표기식을 계산해준다

  • i가 숫자일 경우 스택에 push
  • +일 경우, 스택에 들어있는 2개의 숫자를 뽑아 더하고 다시 스택에 push!
  • 마지막으로, 스택에 남아있는 값을 pop하면 결과!
res=[]
for m in range(10):
    tmp=0
    N=int(input())
    S=input()
    stack=[]
    postfix=''
    cal=[]
    for i in S:
        if not stack and i=="+":
            stack.append(i)
        elif stack and i=='+':
            postfix+=stack.pop()
            stack.append(i)
        else:
            postfix+=i
    else:
        postfix+=stack.pop()

    for i in postfix:
        if i!='+':
            cal.append(int(i))
        elif i=='+':
            cal.append(cal.pop()+cal.pop())
    tmp=cal.pop()
    res.append(tmp)
for i in range(len(res)):
    print("#%d %s"%(i+1,res[i]))
profile
뉴비

0개의 댓글