본문 바로가기

프로그래밍/Python

[ 파이썬 알고리즘 ] 스택 활용 - Postfix 계산

operator = ['*', '/', '+', '-']

def is_number(x):
    if x not in operator:
        return True
    else:
        return False
			
def compute_postfix(postfix):
	stack = []
	for c in postfix:
		if is_number(c):
			stack.append(int(c))
		else:
			z = 0
			y = stack.pop()
			x = stack.pop()
			if c == '*':
				z = x * y
			elif c == '/':
				z = x / y
			elif c == '+':
				z = x + y
			elif c == '-':
				z = x - y
			stack.append(z)
			
	return "{:.4f}".format(stack.pop())
	
p = input().split()
print(compute_postfix(p))

 

2월까지 자료구조 강의를 완강해야 하는 미션이 생겨 블로그에 기록을 남기려 한다.

(대충 발등이 불타고 있는 상태짤)

 

강의 내용 자체는 이전에 들었던 내용이라 왠만큼 알고 있지만 그래도 코딩 문제는 왠만하면 풀고 넘어가고자 한다.

이번 문제는 Postfix를 Infix로 변환하는 함수를 만드는 것으로 비교적 쉬웠다.