하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능
[3코1파] 2023.01.04~ (180차)
[4코1파] 2023.01.13~ (172일차)
[1스4코1파] 2023.04.12~ (83일차)
[1스4코2파] 2023.05.03 ~ (61일차)
2023.07.02 [180일차]
LeetCode Patterns
https://leetcode.com/problems/evaluate-reverse-polish-notation/description/
https://leetcode.com/problems/evaluate-reverse-polish-notation/description/
문제 설명
주어진 expression을 순서대로 계산해라~
문제 풀이 방법
tokens를 int형이면 stack에 넣고
operator면 계산할 두개의 숫자가 있어야 하므로
pop을 두번 해서, multiply 나 sum 같은 경우는 pop 한 상태에서 그대로 곱하거나 더하고,
abstract이나 division 같은 경우는
pop한 반대 순으로 빼고 나눠주면 됨!
나눠줄때는 int형으로~ (제약조건에 써있음)
그리고 마지막 stack에 남아있는 숫자 return 하면 됨
시간복잡도 O(n), 공간복잡도 O(n)이다.
내 코드
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
stack = []
for token in tokens:
if token == "+":
stack.append(stack.pop() + stack.pop())
elif token == '-':
a,b = stack.pop(), stack.pop()
stack.append(b-a)
elif token == '*':
stack.append(stack.pop()*stack.pop())
elif token =='/':
a, b = stack.pop(), stack.pop()
stack.append(int(b/a))
else:
stack.append(int(token))
return stack[0]
증빙
여담
주말 순삭
stack = ['일','토','금','목','수','화','월']
stack.pop()
stack.pop()
stack.pop()
stack.pop()
stack.pop()