Post
후위 표기식2(백준 1935번) | Gihun Son

후위 표기식2(백준 1935번)

문제

후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오.

Untitled

후위 표기식

  • 위 문제를 풀기 위해서는 후위 표기식에 대해서 먼저 이해하고 있어야 한다.

Untitled 1

출처: 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코드로 변환해준다.
  • 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.