[백준] 1935. 후위 표기식2
문제
풀이
- 알파벳으로 주어진 숫자를 바꿔주기 위해, for문과 dictionary를 활용함.
- 연산자가 아닌 문자를 만나면, stack에 집어넣어 줌.
- 연산자를 만나면, 2개의 수를 pop한 후, 연산의 결과를 다시 stack에 넣어줌.
(뺄셈, 나눗셈의 경우 순서에 유의해야 함.)
- 연산이 끝날 때 까지 반복하고, 결과 값을 print함.
코드
def solution() :
n = int(input())
order = list(input())
tmp = [int(input()) for _ in range(n)]
num = dict()
op = ['+', '-', '*', '/']
stack = []
idx = 0
for i in range(len(order)) :
if order[i] not in op :
if order[i] not in num.keys() :
num[order[i]] = tmp[idx]
order[i] = tmp[idx]
idx += 1
else :
order[i] = num[order[i]]
for o in order :
if o not in op :
stack.append(o)
else :
if o == '+' :
a = stack.pop()
b = stack.pop()
stack.append(a+b)
elif o == '-' :
a = stack.pop()
b = stack.pop()
stack.append(b-a)
elif o == '*' :
a = stack.pop()
b = stack.pop()
stack.append(a*b)
else :
a = stack.pop()
b = stack.pop()
stack.append(b/a)
print(f'{stack[0] : >.2f}')
solution()
Author And Source
이 문제에 관하여([백준] 1935. 후위 표기식2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@tldjfj123/백준-1935.-후위-표기식2
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 알파벳으로 주어진 숫자를 바꿔주기 위해, for문과 dictionary를 활용함.
- 연산자가 아닌 문자를 만나면, stack에 집어넣어 줌.
- 연산자를 만나면, 2개의 수를 pop한 후, 연산의 결과를 다시 stack에 넣어줌.
(뺄셈, 나눗셈의 경우 순서에 유의해야 함.)- 연산이 끝날 때 까지 반복하고, 결과 값을 print함.
코드
def solution() :
n = int(input())
order = list(input())
tmp = [int(input()) for _ in range(n)]
num = dict()
op = ['+', '-', '*', '/']
stack = []
idx = 0
for i in range(len(order)) :
if order[i] not in op :
if order[i] not in num.keys() :
num[order[i]] = tmp[idx]
order[i] = tmp[idx]
idx += 1
else :
order[i] = num[order[i]]
for o in order :
if o not in op :
stack.append(o)
else :
if o == '+' :
a = stack.pop()
b = stack.pop()
stack.append(a+b)
elif o == '-' :
a = stack.pop()
b = stack.pop()
stack.append(b-a)
elif o == '*' :
a = stack.pop()
b = stack.pop()
stack.append(a*b)
else :
a = stack.pop()
b = stack.pop()
stack.append(b/a)
print(f'{stack[0] : >.2f}')
solution()
Author And Source
이 문제에 관하여([백준] 1935. 후위 표기식2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@tldjfj123/백준-1935.-후위-표기식2
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def solution() :
n = int(input())
order = list(input())
tmp = [int(input()) for _ in range(n)]
num = dict()
op = ['+', '-', '*', '/']
stack = []
idx = 0
for i in range(len(order)) :
if order[i] not in op :
if order[i] not in num.keys() :
num[order[i]] = tmp[idx]
order[i] = tmp[idx]
idx += 1
else :
order[i] = num[order[i]]
for o in order :
if o not in op :
stack.append(o)
else :
if o == '+' :
a = stack.pop()
b = stack.pop()
stack.append(a+b)
elif o == '-' :
a = stack.pop()
b = stack.pop()
stack.append(b-a)
elif o == '*' :
a = stack.pop()
b = stack.pop()
stack.append(a*b)
else :
a = stack.pop()
b = stack.pop()
stack.append(b/a)
print(f'{stack[0] : >.2f}')
solution()
Author And Source
이 문제에 관하여([백준] 1935. 후위 표기식2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tldjfj123/백준-1935.-후위-표기식2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)