[LeetCode] 150. Evaluate Reverse Polish Notation

Chobby·2025년 1월 23일
1

LeetCode

목록 보기
180/194

😎풀이

해당 문제는 보자마자 스택형 문제임을 직감했다.

해당 자료구조를 떠올렸다면 구현에 큰 어려움이 없는 문제임

tokens를 순회하며 각 기호에 맞는 처리를 하면 된다.

단, 주의해야 할 점은 두 번째 pop()된 선입된 요소가 나누기 작업 시 분자에 위치해야함

function evalRPN(tokens: string[]): number {
    // 스택 방식 풀이
    const stack: number[] = []
    for(let i = 0; i < tokens.length; i++) {
        const token = tokens[i]
        // 기호에 맞는 처리
        switch(token) {
            case '+': {
                const t1 = stack.pop()!
                const t2 = stack.pop()!
                stack.push(t2 + t1)
                break
            }
            case '-': {
                const t1 = stack.pop()!
                const t2 = stack.pop()!
                stack.push(t2 - t1)
                break
            }
            case '*': {
                const t1 = stack.pop()!
                const t2 = stack.pop()!
                stack.push(t2 * t1)
                break
            }
            case '/': {
                const t1 = stack.pop()!
                const t2 = stack.pop()!
                stack.push(Math.trunc(t2 / t1))
                break
            }
            default: {
                stack.push(Number(token))
            }
        }
    }

    // 최종 결과는 stack에 저장
    return stack.pop()!
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글