Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions solutions/baekjoon/1918/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Authored by : parksb08
# Co-authored by : -
# Link : http://boj.kr/467d3ad526dc460db851f8774d4f86b7
import sys
def input():
return sys.stdin.readline().rstrip()

inputs = input()
rs=[]
stack=[]
i_p={'+':1,'-':1,'*':2,'/':2, '(':4, ')':0} #stack에 들어갈 때
s_p={'+':1,'-':1,'*':2,'/':2, '(':0} #stack에서 나올 때
for i in inputs:
if i.isalpha():
rs.append(i)
elif i == '(':
stack.append(i)
elif i ==')':
while stack and s_p[stack[-1]] >= i_p[i]:
if stack[-1]=='(':
stack.pop()
break
else:
rs.append(stack.pop())
else:
while stack and s_p[stack[-1]] >= i_p[i]:
rs.append(stack.pop())
stack.append(i)
while stack:
rs.append(stack.pop())

print(''.join(rs))

''' Solution Description
후위표기식을 만드는 문제
스택을 이용해서 풀었다.
1. 알파벳이면 결과에 바로 추가
2. 여는 괄호면 스택에 추가
3. 닫는 괄호면 여는 괄호가 나올 때 까지 스택에서 pop
4. 연산자면 스택에서 우선순위가 높은 연산자가 나올 때 까지 pop
5. 스택이 빌 때 까지 pop
6. 결과 출력
'''