ALGORITHM/PYTHON

백준 BAEKJOON 15815번 천재 수학자 성필 [PYTHON/파이썬]

칼코 2025. 6. 16. 15:44
728x90
반응형

 

 

 

 

 

백준 BAEKJOON 15815번 천재 수학자 성필 [PYTHON/파이썬]


[목차여기]

<문제 출처> (SILVER Ⅲ)

https://www.acmicpc.net/problem/15815

 

 

 

 

 

 

 

 

 

<풀이>

(a+(b*c))의 식이 abc*+ 식으로 변형되기 때문에

정수는 뒤에서부터 연산자는 앞에서부터 차례대로 계산하면 된다.

정수를 먼저 stack에 담아두고

연산자가 나왔을 시에는 pop을 2번 하여 나온 값들을

연산자에 맞춰 계산한 후 다시 stack에 담아주는 작업을 했다.

최종적으로 계산이 끝나면 stack에는 하나의 정수가 담기게 되니

stack의 0번째 인덱스를 출력하여 마무리했다.

 

 

 

 

 

 

 

 

<코드>

expression = input()
stack = []

for i in expression:
    if i == "+":
        stack.append(stack.pop() + stack.pop())
    elif i == "-":
        a, b = stack.pop(), stack.pop()
        stack.append(b - a)
    elif i == "*":
        stack.append(stack.pop() * stack.pop())
    elif i == "/":
        a, b = stack.pop(), stack.pop()
        stack.append(b / a)
    else:
        stack.append(int(i))

print(stack[0])

 

 

 

 

 

 

 

728x90
반응형