-
[백준 / Python] 1918번 후위 표기식 | 초코더알고리즘/백준 2020. 1. 30. 15:02
https://www.acmicpc.net/problem/1918
접근법
피연산자를 만나는 경우는 바로 출력해주었습니다.
연산자의 우선순위를 지정해주는 것이 핵심이었습니다. 스택에 들어있는 연산자의 우선순위가 비교하려는 연산자의 우선순위보다 같거나 높은경우가 있으면 모두 pop()해주고난후 비교하려는 연산자를 마지막에 추가해줍니다.
나의 풀이
import sys str=sys.stdin.readline().strip() stack=[] prior={ '*':2, '/':2, '+':1, '-':1, '(':0 } for ch in '('+str+')': if ch.isupper(): print(ch,end='') elif ch=='(': stack.append(ch) elif ch==')': while True: o=stack.pop() if o == '(': break print(o,end='') else: while stack[-1] != '(' and prior[ch] <= prior[stack[-1]]: print(stack.pop(),end='') stack.append(ch)
'알고리즘 > 백준' 카테고리의 다른 글
[백준 / Python] 10973번 이전 순열 | 초코더 (0) 2020.02.06 [백준 / Python] 10972번 다음순열 | 초코더 (0) 2020.02.06 [백준 / Python] 1935번 후위 표기식2 | 초코더 (0) 2020.01.30 [백준 / Python] 17298번 오큰수 | 초코더 (0) 2020.01.30 [백준 / Python] 10799번 쇠막대기 | 초코더 (0) 2020.01.30