[백준] 후위 표기식2 1935번 파이썬 Python 자료구조

Jeony·2021년 11월 17일
0

백준

목록 보기
12/25
post-thumbnail

📌생각해보기

후위 표기식(ABC+DE/-)을 중위 표기식(A+BC-D/E)으로 바꿔야한다.

주어진 자료를 재정리 해야한다.
Stack은 주어진 자료를 재정리 할 때 주로 사용되는 방법이다.

피연산자를 Stack에 넣고 연산자를 만나면 가장 위에 있는 값 두 개를 꺼내서 계산 후 다시 Stack에 넣는다.

📌내가 작성한 코드

import sys

count = int(input())
num = list(input())

num_list = [0] * count
for i in range(count):
    num_list[i] = int(sys.stdin.readline())

stack = []
for i in num:
    if i.isalpha():
        stack.append(num_list[ord(i) - ord("A")])

    else:
        b = stack.pop()
        a = stack.pop()
        
        if i == "*":
            c = a * b
        elif i == "/":
            c = a / b
        elif i == "+":
            c = a + b
        elif i == "-":
            c = a - b

        stack.append(c)

print("%.2f" %stack[-1])

📌풀이

  1. 받은 숫자를 알파벳에 대입하기
    1-1. 받은 숫자의 개수대로 리스트 안에 원소를 생성하고 값은 0으로 준다. ex) 5개 -> list = [0] * 5
    1.2 반복으로 돌리면서
    만약 알파벳일 경우,
	ord("A") = 65
    	ord("A") - ord("A") = 0
        
        ord("B") = 66
        ord("B") - ord("A") = 1
        
        ord("C") = 67
        ord("C") - ord("A") = 2

이렇게 아스키코드를 이용해서 0 ~ 개수 끝까지 인덱스를 구해서 list에 대입한다.

  1. 후위 표기식 계산은 위의 그림 참고
profile
알고리즘으로 문제를 해결하다가 포기함

0개의 댓글