세상을 더 좋게

[백준] 1935 '후위 표기식 2' 파이썬(python) 본문

카테고리 없음

[백준] 1935 '후위 표기식 2' 파이썬(python)

나는SOU 2021. 11. 4. 00:00

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

 

1935번: 후위 표기식2

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

www.acmicpc.net

N = int(input())    # 피연산자의 개수
sen = input()    # 후위 표기식
alpha = [0] * N    # 피연산자 값들을 받을 리스트

for i in range(N) :
    alpha[i] = int(input())    # 피연산자 값들 받기
    
stack = []    # 스택

for i in sen :
    if 'A' <= i <= 'Z' :    # 피연산자 만나면
        stack.append(alpha[ord(i) - ord('A')])    # i가 알파벳이기에 숫자로 전환하여 스택에 저장
    else :    # 연산자 만나면
        str2 = stack.pop()
        str1 = stack.pop()    # 연산자 중 '-'나 '/'는 순서가 중요하기에 이렇게 구분
       
        if i == '+' :
            stack.append(str1 + str2)
        elif i == '-' :
            stack.append(str1 - str2)
        elif i == '*' :
            stack.append(str1 * str2)
        elif i == '/' :
            stack.append(str1 / str2)
            
print('%.2f' %stack[0])    # 소수점 둘째자리까지 입력

Point

  • 피연산자를 만나면 Push, 연산자를 만나면 Pop을 이용하는 Stack을 활용
  • '-'나 '/' 조심
  • 아스키 코드를 이용해 문자를 숫자로 전환하여 인덱스 활용
  • 소수점 둘째자리까지 출력하는 .2f를 사용