코딩테스트 파이썬/백준
후위 표기식 ( 1918번 )
세용용용용
2025. 3. 30. 14:35
나의 풀이
import sys
def _main(n_string):
answer, stack = [], []
for i in n_string:
if i.isalpha():
answer.append(i)
elif (i == '('):
stack.append(i)
elif (i == '+') or (i == '-'):
while stack and (stack[-1] != '('):
answer.append(stack.pop())
stack.append(i)
elif (i == '*') or (i == '/'):
while stack and (stack[-1] in ('*', '/')):
answer.append(stack.pop())
stack.append(i)
elif (i == ')'):
while stack and (stack[-1] != '('):
answer.append(stack.pop())
stack.pop()
for idx in range(len(stack)-1, -1, -1):
answer.append(stack[idx])
return ''.join(answer)
n_string = sys.stdin.readline().rstrip()
print(_main(n_string))
시간 복잡도
for i in n_string : 문자열을 순회 ( 선형 시간 복잡도 )
elif : 조건 만족시 stack을 뺴서 append ( 선형 시간 복잡도 )
해당 알고리즘 시간 복잡도 : 이차형 시간 복잡도 ( O(n ** 2) )