한 걸음씩

[프로그래머스][JS] 문자열 계산하기 본문

Programmers

[프로그래머스][JS] 문자열 계산하기

winter17 2023. 6. 14. 15:21

https://school.programmers.co.kr/learn/courses/30/lessons/120902

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정 1

function solution(my_string) {
    return eval(my_string);
}

eval은 문자열로 둘러싸인 계산식을 자동변환해서 반환해 준다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/eval

 

eval() - JavaScript | MDN

**eval()**은 문자로 표현된 JavaScript 코드를 실행하는 함수입니다.

developer.mozilla.org

 

풀이 과정 2

function solution(my_string) {
    const str = my_string.split(' ')
    
    let stack = []
    let operator = 1 // 연산자를 분리할 변수
    for (let i = 0; i < str.length; i++){
        if (str[i] === '+'){
            operator = 1 // '+'라면 양수
        }else if (str[i] === '-'){
            operator = -1 // '-'라면 음수
        }else{ // 숫자일 경우 operator과 곱하기 
            stack.push(str[i] * operator)
        }
    }
    // 스택에 저장된 수를 더해서 반환
    return stack.reduce((acc, cur) => acc + cur)
}

위의 방법과 다르게 eval을 사용하는 것보다 안전하고 스택과 연산자로 접근했기 때문에 더 좋은 방법이다.

 


리뷰

eval은 계산기를 만들 때, 사용해 봤던 함수이지만 권장하지 않는 방법이라고 해서 기억하고 있었다.

그래서 직접 구현하는 방식으로 다시 풀어봤는데 생각보다 어렵지 않아서 괜찮았다.

계산기 만들 때도 이 구현 방식을 적용해 봐야겠다