[1스4코2파] # 180. LeetCode 150. Evaluate Reverse Polish Notation

gunny·2023년 7월 2일
0

코딩테스트

목록 보기
181/530

[1스4코2파] 1명의 스위프트 개발자와 4명의 코틀린 개발자, 2명의 파이썬 개발자코딩 테스트 서막 : 1스4코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능

START :

[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일차)

Today :

2023.07.02 [180일차]
LeetCode Patterns
https://leetcode.com/problems/evaluate-reverse-polish-notation/description/

150. Evaluate Reverse Polish Notation

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()

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글