[수정중]중위식을 후위식으로 변환하기

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
s = '(6+5*(2-8)/2)'
stack = list()
result = list()
icp = {'(':3, '+':1, '-':1, '*':2, '/':2} #???
isp = {'(':0, '+':1, '-':1, '*':2, '/':2}
for i in s:
    if i == '(':
        stack.append(i)
    elif i in isp.keys():
        #isp check
        if isp[i] > isp[stack[len(stack)-1]]:
            stack.append(i)
        else:
            while True:
                c = stack.pop(-1)
                result.append(c)
                if isp[i] > isp[stack[len(stack)-1]]:
                    stack.append(i)
                    break
    elif i == ')':
        while stack[len(stack)-1] != '(':
            c = stack.pop(-1)
            result.append(c)
        stack.pop()
    else:
        result.append(i)
print(result)
icp와 isp를 이해하는 것이 필요.

댓글

이 블로그의 인기 게시물

[python]섬의 둘레구하기

백트래킹으로 부분집합구하기(Get Powerset usiing Backtracking)

[패턴매칭][Python]보이어 무어 알고리즘