문제출처: https://www.acmicpc.net/problem/1935
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 |