#해당 연산자 앞에 있는 2개의 숫자를 피연산자로 계산하고 다시 append해준다.
s = input()
stack = []
for i in s:
if i.isdecimal():
stack.append(int(i))
else:
if i == "+":
b = stack.pop()
a = stack.pop()
stack.append(a+b)
elif i == "-":
b = stack.pop()
a = stack.pop()
stack.append(a-b)
elif i == "*":
b = stack.pop()
a = stack.pop()
stack.append(a*b)
elif i == "/":
b = stack.pop()
a = stack.pop()
stack.append(a/b)
print(stack[0])
- 이 문제의 경우 숫자를 모두 stack에 넣어준 뒤 진행한다.
- stack에 있는 숫자는 연산자를 기준으로 앞, 앞앞에 있는 숫자들을 피연산자로 사용한다.
- 이때 피연산자들을 연산자로 계산이 끝나면 다시 append해주어 진행한다.
- 모든 계산이 끝나면 stack을 출력해주면 된다.
'자료구조와 알고리즘 > 개인적인 코딩테스트 관련 풀이' 카테고리의 다른 글
[자료구조 활용 ][스택, 큐, 해쉬, 힙] - 응급실(큐) (0) | 2022.07.18 |
---|---|
[자료구조 활용 ][스택, 큐, 해쉬, 힙] - 공주 구하기(큐) (0) | 2022.07.18 |
[자료구조 활용][스택, 큐, 해쉬, 힙] - 후위 표기식 만들기(스택) (0) | 2022.07.17 |
[자료구조 활용 ][스택, 큐, 해쉬, 힙] - 가장 큰 수(스택) (0) | 2022.07.15 |
[이분탐색(결정알고리즘)][그리디 알고리즘] - 침몰하는 타이타닉(그리디 알고리즘) (0) | 2022.07.12 |