나의 풀이
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) )'코딩테스트 파이썬 > 백준' 카테고리의 다른 글
| 숨바꼭질 2 ( 12851번 ) (0) | 2025.04.05 |
|---|---|
| 이진 검색 트리 ( 5639번 ) (0) | 2025.03.31 |
| 웜홀 ( 1865번 ) (0) | 2025.03.30 |
| 플로이드 ( 11404번 ) (0) | 2025.03.27 |
| N-Queen ( 9663번 ) (0) | 2025.03.27 |