티스토리 뷰

 

n=int(input())

sik=input()
list=[]
stack=[]

for i in range(n):
    list.append(int(input()))

for i in sik:
    if 'A' <= i <= 'Z': #피연산자 만나면
        stack.append(list[ord(i)-ord('A')])
    else: #연산자 만나면
        a=stack.pop()
        b=stack.pop()
        if i == '+':
            stack.append(b+a)
        elif i == '-':
            stack.append(b-a)
        elif i == '*':
            stack.append(b*a)
        elif i == '/':
            stack.append(b/a)

print('%.2f' %stack[0])

stack을 이용해서 풀어주었다. 피연산자를 만나면 알파벳을 아스키코드 숫자로  바꿔주는 ord함수를 이용해서 스택에 넣어주고, 연산자를 만나면  스택에서 pop으로 꺼내주는 식으로 코드를 작성하였다. 마지막에는 소수점 둘째자리까지 출력될 수 있도록 하였다.

'알고리즘' 카테고리의 다른 글

백준 파이썬 10809번 알파벳찾기  (0) 2023.05.18
백준 파이썬 10808번 알파벳개수  (0) 2023.05.18
백준 자바 1158번 요세푸스  (0) 2023.04.03
백준 자바 10845번 큐  (0) 2023.03.30
백준 자바 9012번 괄호  (1) 2023.03.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함