[백준] 1918번 후위 표기식
코드
from collections import deque
def get_word():
before = deque()
while True:
curr = s1.pop()
if curr == '(':
break
else:
before.appendleft(curr)
after = deque()
while len(before) >= 3:
a, b, c = before.popleft(), before.popleft(), before.popleft()
if b in {'*', '/'}:
before.appendleft(a+c+b)
else:
after.append(a)
after.append(b)
before.appendleft(c)
if before:
after.append(before.pop())
before = after
while len(before) >= 3:
a, b, c = before.popleft(), before.popleft(), before.popleft()
before.appendleft(a+c+b)
return before[0]
original = deque(input())
if original[0] != '(' or original[-1] != ')':
original.appendleft('(')
original.append(')')
s1 = []
for e in original:
if e == ')':
s1.append(get_word())
else:
s1.append(e)
before = deque(s1)
after = deque()
while len(before) >= 3:
a, b, c = before.popleft(), before.popleft(), before.popleft()
if b in {'*', '/'}:
before.appendleft(a+c+b)
else:
after.append(a)
after.append(b)
before.appendleft(c)
if before:
after.append(before.pop())
before = after
while len(before) >= 3:
a, b, c = before.popleft(), before.popleft(), before.popleft()
before.appendleft(a+c+b)
print(before[0])
Author And Source
이 문제에 관하여([백준] 1918번 후위 표기식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@leehj8896/백준-1918번-후위-표기식
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from collections import deque
def get_word():
before = deque()
while True:
curr = s1.pop()
if curr == '(':
break
else:
before.appendleft(curr)
after = deque()
while len(before) >= 3:
a, b, c = before.popleft(), before.popleft(), before.popleft()
if b in {'*', '/'}:
before.appendleft(a+c+b)
else:
after.append(a)
after.append(b)
before.appendleft(c)
if before:
after.append(before.pop())
before = after
while len(before) >= 3:
a, b, c = before.popleft(), before.popleft(), before.popleft()
before.appendleft(a+c+b)
return before[0]
original = deque(input())
if original[0] != '(' or original[-1] != ')':
original.appendleft('(')
original.append(')')
s1 = []
for e in original:
if e == ')':
s1.append(get_word())
else:
s1.append(e)
before = deque(s1)
after = deque()
while len(before) >= 3:
a, b, c = before.popleft(), before.popleft(), before.popleft()
if b in {'*', '/'}:
before.appendleft(a+c+b)
else:
after.append(a)
after.append(b)
before.appendleft(c)
if before:
after.append(before.pop())
before = after
while len(before) >= 3:
a, b, c = before.popleft(), before.popleft(), before.popleft()
before.appendleft(a+c+b)
print(before[0])
Author And Source
이 문제에 관하여([백준] 1918번 후위 표기식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@leehj8896/백준-1918번-후위-표기식저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)