[알고리즘 문제 풀이][파이썬] 백준 1935번: 후위 표기식2
백준 1935 문제 링크: https://www.acmicpc.net/problem/1935
📑 문제 설명
후위 표기식과 각 피연산자에 대응하는 값들이 주어졌을 때, 계산하는 프로그램 작성
입력: 피연산자의 개수, 후위표기식, 피연산자에 해당하는 값
출력: 후위표기식 연산 결과
💡 문제 해결 방법
- 피연산자가 나올 때는 stack에 push
- 피연산자는 알파벳(A,B,C...)로 주어지기 때문에 각 알파벳에 해당하는 숫자를 알기 위해서 아스키 코드를 사용
- 연산자가 나올 때는 stack에서 마지막 두 개 숫자를 연산하여 다시 stack에 push
💻 코드
import sys
def postfix(n, post, num_list):
stack = list()
temp = 0
result = 0
for i in range(len(post) - 1):
if (post[i] != '+' and post[i] != '-' and post[i] != '*' and post[i] != '/'):
stack.append(num_list[ord(post[i]) - 65])
elif (post[i] == '+'):
cur = stack.pop()
prev = stack.pop()
stack.append(prev + cur)
elif (post[i] == '-'):
cur = stack.pop()
prev = stack.pop()
stack.append(prev - cur)
elif (post[i] == '*'):
cur = stack.pop()
prev = stack.pop()
stack.append(prev * cur)
elif (post[i] == '/'):
cur = stack.pop()
prev = stack.pop()
stack.append(prev / cur)
return stack.pop()
if __name__ == '__main__':
n = int(sys.stdin.readline())
post = sys.stdin.readline()
num_list = list()
for i in range(n):
num = int(sys.stdin.readline())
num_list.append(num)
answer = postfix(n, post, num_list)
print("{:.2f}".format(answer))
💟 추가적으로 알게 된 점
Author And Source
이 문제에 관하여([알고리즘 문제 풀이][파이썬] 백준 1935번: 후위 표기식2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeomja99/알고리즘-문제-풀이파이썬-백준-1935번-후위-표기식2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)