후위 표기식2(백준 1935번)
문제
후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오.
후위 표기식
- 위 문제를 풀기 위해서는 후위 표기식에 대해서 먼저 이해하고 있어야 한다.
출처: https://m.blog.naver.com/lhm0812/220577036664
나의 풀이
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
import sys
N=int(input())
cal=input()
num_list=[]
for i in range(N):
n=int(sys.stdin.readline().strip())
num_list.append(n)
stack=[]
for c in cal:
if 'A'<=c<='Z':
stack.append(num_list[ord(c)-ord('A')])
else:
n2=stack.pop()
n1=stack.pop()
if c=='+':
stack.append(n1+n2)
elif c=='-':
stack.append(n1-n2)
elif c=='*':
stack.append(n1*n2)
elif c=='/':
stack.append(n1/n2)
print(f'{stack[0]:.2f}')
- 후위 표기식을 찾아본 이후에는 문제를 이해했고, stack을 사용해서 풀었다.
추가적인 문법
if 'A'<=c<='Z':
와 같이 문자로 범위를 나타내는 것이 가능하다.- ASCII코드를 기준으로 크기를 비교하기 때문에,
ord(’A’)≤ord(c)≤ord(’Z’)
와 동일한 것 ord(문자)
는 해당 문자의 ASCII코드로 변환해준다.
- ASCII코드를 기준으로 크기를 비교하기 때문에,
print(f'{stack[0]:.2f}')
1 2 3 4 5
# 문자열 맨 앞에 f를 붙이고, 출력할 변수, 값을 중괄호 안에 넣습니다. s = 'coffee' n = 5 result1 = f'저는 {s}를 좋아합니다. 하루 {n}잔 마셔요.' print(result1)
출처: https://blockdmask.tistory.com/429
- f-string을 사용하는 방법은 위와 같다.(중괄호 안에 변수명을 넣어주면 된다)
- 이 때 소수점을 조절할 때는
{변수명:.2f}
의 형식을 사용하면 된다. 이렇게 사용하면 소수 2번째자리까지 사용하는 것
round(변수명,2)
- round는 반올림하는 것인데, 위는 소수 2째자리까지 반올림한다는 것이다. 따라서 f-string을 사용하여 2째자리까지 사용하는 것과는 다르다
This post is licensed under CC BY 4.0 by the author.