Backdrop

프로그래머스 ▸ 코딩 기초 트레이닝

간단한 식 계산하기
0

문제 설명

문자열 binomial이 매개변수로 주어집니다. binomial은 "a op b" 형태의 이항식이고 ab는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.

제한사항

  • 0 ≤ a, b ≤ 40,000
  • 0을 제외하고 a, b는 0으로 시작하지 않습니다.

입출력 예

binomialresult
"43 + 12"55
"0 - 7777"-7777
"40000 * 40000"1600000000

입출력 예 설명

입출력 예 #1

  • 예제 1번의 binomial은 "43 + 12"로 이 식을 계산한 결과인 43 + 12 = 55를 return 합니다.

입출력 예 #2

  • 예제 2번의 binomial은 "0 - 7777"로 이 식을 계산한 결과인 0 - 7777 = -7777을 return 합니다.

입출력 예 #3

  • 예제 3번의 binomial은 "40000 * 40000"으로 이 식을 계산한 결과인 40000 × 40000 = 1600000000을 return 합니다.

풀이

이론

eval()

eval()은 문자로 표현된 JavaScript 코드를 실행하는 함수예요.

console.log(eval('2 + 2'));
// Expected output: 4
 
console.log(eval(new String('2 + 2')));
// Expected output: 2 + 2
 
console.log(eval('2 + 2') === eval('4'));
// Expected output: true
 
console.log(eval('2 + 2') === eval(new String('2 + 2')));
// Expected output: false

eval을 절대 사용하지 말 것!

eval()은 인자로 받은 문자열을 자바스크립트 코드로 실행하는 함수예요. 악의적인 사용자가 eval()에 악성 코드를 넣어서 실행하면, 악성 코드가 실행되어 보안에 매우 취약해져요.

또한 최신 자바스크립트 엔진에서 여러 최적화를 수행하는데, eval()을 사용하면 이러한 최적화를 수행할 수 없어 성능이 떨어져요.

코드

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