본문 바로가기
알고리즘/자료구조

[백준][Python] 1935번 후위 표기식2

by 임짠짠 2022. 2. 7.
반응형
 

1935번: 후위 표기식2

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

www.acmicpc.net

코드

n = int(input())
ex = list(input())
inp = []
num = []
cnt = 0
for i in range(n):
    inp.append(int(input()))

for i in ex:
    if 'A' <= i <= 'Z':
        num.append(inp[cnt])
        cnt+=1
    else:
        b = num.pop()
        a = num.pop()
        if i == '+':
            num.append(a+b)
        elif i == '-':
            num.append(a-b)
        elif i == '*':
            num.append(a*b)
        elif i =='/':
            num.append(a/b)

print("%.2f" %num[0])

 

위 코드는 런타임 에러가 났다. 같은 알파벳이 왔을때를 고려 안해줘서 list 범위 밖에 있는 인덱스를 가져오려고 해서 에러가 났다. 그래서 알파벳을 아스키코드로 변환하여 같은 알파벳이 오면 같은 인덱스를 가져오게 해주었다. 

 

n = int(input())
ex = list(input())
inp = []
num = []
for i in range(n):
    inp.append(int(input()))


for i in ex:
    if 'A' <= i <= 'Z':
        number = ord(i) - ord('A')
        num.append(inp[number])
    else:
        b = num.pop()
        a = num.pop()
        if i == '+':
            num.append(a+b)
        elif i == '-':
            num.append(a-b)
        elif i == '*':
            num.append(a*b)
        elif i =='/':
            num.append(a/b)

print("%.2f" %num[0])

 


<파이썬 아스키코드 변환 함수>

  • ord()

   - 문자열을 아스키코드로 반환할 수 있는 함수이다. 

>>>ord('a')
97

>>>ord('z')
122

 

  • chr()

    - 아스키코드를 문자열로 변환하는 함수이다.

>>> chr(65)
A

>>> chr(90)
Z
반응형

댓글