1935번: 후위 표기식2
첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이
www.acmicpc.net
후위 표기식은 연산자가 피연산자의 뒤에 등장하는 구조다. 앞에서부터 차근차근 보면서 연산자가 등장한 경우 그간의 숫자 중 가장 마지막 2개를 뽑아와 계산하면 되는 문제였다.
문제 이해를 이상하게 해서 1시간 넘게 헤맸다. 방향을 잘못 잡으니까 계속 그 방향으로만 생각이 빙빙 돌아서 결국 2시간정도 지난 뒤에 다른 사람 풀이를 봤더니 슬퍼졌다. 도대체 왜 난 뒤에서부터 계산한거지 ...?
코드는 다음과 같다.
import sys
input = sys.stdin.readline
n = int(input())
data = input()
data = data.replace("\n", "")
nums = [int(input()) for _ in range(n)]
# nums인덱스 <- ord() - 65
tmp = []
num_list = []
for s in data:
# 숫자
if 65 <= ord(s) <= 90:
num_list.append(nums[ord(s) - ord("A")])
# 연산자
else:
back = num_list.pop()
front = num_list.pop()
if s == "+":
num_list.append(front + back)
elif s == "-":
num_list.append(front - back)
elif s == "*":
num_list.append(front * back)
else:
num_list.append(front / back)
# 소숫점 두번째 자리까지 표기
print("{:.2f}".format(num_list[0]))
다시금 기억하면 좋을 파이썬 문법 기록하기
- ord('문자') : 아스키코드값으로 바꿔준다
- "{:.2f}".format(숫자) : 소숫점 n번째 자리까지 출력
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 1874 스택 수열 - python (0) | 2022.10.13 |
---|---|
[백준] 1406 에디터 - python (0) | 2022.10.12 |
(다시 풀어볼 문제) [백준] 2981 검문 - python (0) | 2022.10.10 |
[백준] 17103 골드바흐 파티션 - python (0) | 2022.10.10 |
[백준] 17087 숨바꼭질 6 - python (0) | 2022.10.10 |