Skip to main content

백준 1935 후위 표기식 2

·121 words·1 min· loading

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

1935번: 후위 표기식2첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이www.acmicpc.net

진짜 후위표기식이 뭔지만 찾아보고 혼자 푼 문제라 쾌감이 째진다 ㅎㅎ

단어열이 표현되는 abc_list를 통해 num_list에 접근해서 진짜 값을 알아내는 식으로 숫자를 넣었고,

그다음부터는 그냥 연산자가 나올때까지 stack에 넣고

연산자가 나올때마다 stack에서 2개를 pop해주고

두번째를 a, 첫번째를 b로 정한뒤 연산을 수행하고

결과를 다시 스택에 넣는다.

다른사람코드를 보면서 느꼈는데, 각각의 알파벳의 아스키코드를 이용해서 좀더 깔끔하게 정리할 수도 있다.

ord(i)-ord(‘A’)

import stringabc_list=list(string.ascii_uppercase)n=int(input())num_list=[]
w=input()for _ in range(n):    num_list.append(int(input()))pl=['*','+','/','-']
s=[] #스택for i in w:    if i not in pl:
        s.append(num_list[abc_list.index(i)])           else:        b=s.pop()
        a=s.pop()        if i =='+':            c=a+b        elif i=='-':
            c=a-b        elif i=='*':            c=a*b        elif i=='/':
            c=a/b        s.append(c)print('{:.2f}'.format(s.pop()))