my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.
제한사항
연산자는 +, -만 존재합니다.
문자열의 시작과 끝에는 공백이 없습니다.
0으로 시작하는 숫자는 주어지지 않습니다.
잘못된 수식은 주어지지 않습니다.
5 ≤ my_string의 길이 ≤ 100
my_string을 계산한 결과값은 1 이상 100,000 이하입니다.
my_string의 중간 계산 값은 -100,000 이상 100,000 이하입니다.
계산에 사용하는 숫자는 1 이상 20,000 이하인 자연수입니다.
my_string에는 연산자가 적어도 하나 포함되어 있습니다.
return type 은 정수형입니다.
my_string의 숫자와 연산자는 공백 하나로 구분되어 있습니다.
입출력 예
my_string | result |
---|---|
"3 + 4" | 7 |
function solution(my_string) {
let arr = my_string.split(" ").map(el => el*0 === 0 ? Number(el) : el)
let sum = arr[0];
for(let i=1; i<arr.length; i+=2){
arr[i] === "+" ? sum += arr[i+1] : sum -= arr[i+1]
}
return sum
}
문자열my_string
을 공백(" ")을 기준으로 split()
하고 숫자는 number타입으로 변환한 배열을 arr
이라고 하고
let arr = my_string.split(" ").map(el => el*0 === 0 ? Number(el) : el)
// my_string = "1 + 1 - 3"
// > arr = [1, "+", 1, "-", 3]
문자열의 계산값 sum
을 선언하고 그 초기값은 arr
의 0번째 값으로 할당
let sum = arr[0];
// sum = 1
+, - 연산자는 1,3,5,... 홀수 index에만 존재하므로 for문으로 순회할 때 index 1부터 2씩 증가시킨다
arr의 요소가 +
면 sum에 더하고 -
면 sum에 뺀다
for(let i=1; i<arr.length; i+=2){
arr[i] === "+" ? sum += arr[i+1] : sum -= arr[i+1]
}
// i = 1일 때, sum = 1 + 1 = 2
// i = 3일 때, sum = 2 - 3 = -1
순회를 마치면 sum
을 반환한다