[Boj문제풀이]

[Boj/백준] 1935 Python

ki7348 2021. 9. 2. 16:23

문제출처: https://www.acmicpc.net/problem/1935

 

1935번: 후위 표기식2

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

www.acmicpc.net

 

 

1. 문제 접근 방식

스택으로 풀면 되겠다고 했는데 두번째 예제 케이스 같은 경우에는 어떻게 처리할까 고민을 많이 했다.

아스키코드와 리스트를 하나 더 사용해서 해결했다.

 

 

2. 내가 푼 코드

import sys

case = int(sys.stdin.readline())

form = sys.stdin.readline().strip()
num = []
for i in range(case):
    num.append(int(sys.stdin.readline()))
stack = []
for i in form:
    if i == '+':
        a = stack.pop()
        b = stack.pop()
        stack.append(a+b)
    elif i == '-':
        a = stack.pop()
        b = stack.pop()
        stack.append(b-a)
    elif i == '/':
        a = stack.pop()
        b = stack.pop()
        stack.append(b/a)
    elif i == '*':
        a = stack.pop()
        b = stack.pop()
        stack.append(a*b)
    else:
        if i.isupper():
            stack.append(num[ord(i)-ord('A')])

for j in stack:
    print("{:.2f}".format(j))

 

 

3. 결과 및 느낀점

소수점을 출력하기 위한 format 서식 지정 방식을 익히자.

{:.2f}는소수점 둘째자리까지만 출력하겠다는 뜻이다.

문제에 알파벳이 나오면 아스키코드를 쓸 준비를 하자.

'[Boj문제풀이]' 카테고리의 다른 글

[Boj/백준] 10845 Python  (0) 2021.09.06
[Boj/백준] 1406 Python  (0) 2021.09.03
[Boj/백준] 15815 Python  (0) 2021.09.01
[Boj/백준] 5397 Python  (0) 2021.08.31
[Boj/백준] 11899 Python  (0) 2021.08.30