Lv.0 - 문자열 계산하기_01.02

송철진·2023년 1월 2일
0

문제 설명

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_stringresult
"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을 반환한다

profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글