https://www.acmicpc.net/problem/1935
1935번: 후위 표기식2
첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이
www.acmicpc.net
스택에 [숫자, 숫자, 연산자]가 세트가 만들어지면 연산을 진행하는 형식으로 구현해보았다.
사실 후위표기식을 몰랐는데 정보처리기사 공부하면서 처음 알게돼서 아니었으면 못풀고 헤맸을듯..
내가 써본 코드
import sys
n = int(sys.stdin.readline())
alpha = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
num = [0] * 26
stack = []
count = 0
input = sys.stdin.readline()
for i in range(n):
num[i] = int(sys.stdin.readline().rstrip())
for a in input:
if a in alpha:
count += 1
stack.append(num[alpha.index(a)])
elif (count >= 2) and (a not in alpha):
count -= 1
mid = a
right = stack.pop()
left = stack.pop()
if mid == "+":
number = left + right
stack.append(number)
elif mid == "-":
number = left - right
stack.append(number)
elif mid == "/":
number = left / right
stack.append(number)
elif mid == "*":
number = left * right
stack.append(number)
print(*stack)
예제는 클리어하고 제출하니 틀렸다고 한다... 어째서지..?!
출력에 소숫점 둘째 자리까지 표시하라는 조건이 있었다....
아래와 같이 수정...
print(*stack) -------> print("{:.2f}".format(*stack))
다들 조건을 꼭 확인합시다...😂
최종적인 코드!
import sys
n = int(sys.stdin.readline())
alpha = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
num = [0] * 26
stack = []
count = 0
input = sys.stdin.readline()
for i in range(n):
num[i] = int(sys.stdin.readline().rstrip())
for a in input:
if a in alpha:
count += 1
stack.append(num[alpha.index(a)])
elif (count >= 2) and (a not in alpha):
count -= 1
mid = a
right = stack.pop()
left = stack.pop()
if mid == "+":
number = left + right
stack.append(number)
elif mid == "-":
number = left - right
stack.append(number)
elif mid == "/":
number = left / right
stack.append(number)
elif mid == "*":
number = left * right
stack.append(number)
print("{:.2f}".format(*stack))
'공부 > 알고리즘' 카테고리의 다른 글
[알고리즘][백준] 10820번 문자열 분석 - 파이썬(python) 풀이 (1) | 2024.02.27 |
---|---|
[알고리즘][백준] 10808번 알파벳 개수 - 파이썬(python) 풀이 (1) | 2024.02.26 |
[알고리즘][백준] 1918번 후위 표기식 - 파이썬(python) 풀이 (0) | 2024.02.26 |
[알고리즘][백준] 17299번 오등큰수 - 파이썬(python) 풀이 (1) | 2024.02.25 |
[알고리즘][백준] 17298번 오큰수 - 파이썬(python) 풀이 (1) | 2024.02.25 |