my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.
my_string | result |
---|---|
"3 + 4" | 7 |
입출력 예 설명
입출력 예 #1
3 + 4 = 7을 return 합니다.
function solution(my_string) {
let arr = my_string.split(' ')
let cal = arr[0] * 1;
for(let i = 1; i< arr.length; i++){
if(arr[i] === '+')
cal += arr[i+1] * 1;
else if(arr[i] === '-')
cal -= arr[i+1] * 1;
else
continue;
}
return cal;
}
한 번에 계산하는 방법이 있을 것 같아 찾아보니 eval()
이라는 함수가 있었다. 이것은 문자로 표현된 자바스크립트 구문을 실행하는 함수인데, MDN에 따르면 이 함수는 보안에 굉장히 취약하기 때문에 사용하는 것을 지양하라고 나와 있었다. 그래서 이 함수 대신 반복문을 사용하여 기호를 검사한 뒤 값을 리턴해 주었다.
function solution(my_string) {
return Function(`return ${my_string}`)()
}
자바스크립트 공식 문서를 참고해서 풀이를 만들어 보았다. eval 대신 새로운 function을 리턴해주는 것으로도 eval을 구현할 수 있다. 대신 리턴은 문자로, my_string은 변수로 만들어 주어야 제대로 동작한다.