[Lv.0] 간단한 식 계산하기

woodstock·2024년 3월 1일
0

코딩테스트

목록 보기
53/56
post-thumbnail

간단한 식 계산하기

문제설명

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

풀이

풀이 1.

function solution(binomial) {
    const arr = binomial.split(' ');
    
    switch(arr[1]) {
        case '+':
            return parseInt(arr[0]) + parseInt(arr[2]);
        case '-':
            return parseInt(arr[0]) - parseInt(arr[2]);
        case '*':
            return parseInt(arr[0]) * parseInt(arr[2]);
    }
}

풀이 2.

function solution(binomial) {
    const arr = binomial.split(' ');    
    if (arr[1] === '+') return parseInt(arr[0]) + parseInt(arr[2]);
    if (arr[1] === '-') return parseInt(arr[0]) - parseInt(arr[2]);
    if (arr[1] === '*') return parseInt(arr[0]) * parseInt(arr[2]);
}

풀이 3.

const ops = {
    '+': (a, b) => a + b,
    '-': (a, b) => a - b,
    '*': (a, b) => a * b,
}

function solution(binomial) {
    const [a, op, b] = binomial.split(' ');
    return ops[op](+a, +b);
}

풀이해설

연산자 함수 객체
const ops = {
  '+': (a, b) => a + b,
  '-': (a, b) => a - b,
  '*': (a, b) => a * b,
};
  • ops는 연산자를 키(key)로, 해당 연산자에 대한 함수를 값(value)으로 가진다.
  • 이 객체는 세 가지 연산자('+', '-', '*')에 대한 연산을 정의한다.
    • '+' 키에는 두 숫자의 합을 반환하는 함수가 연결되어 있다.
    • '-' 키에는 첫 번째 숫자에서 두 번째 숫자를 뺀 값을 반환하는 함수가 연결되어 있다.
    • '*' 키에는 두 숫자의 곱을 반환하는 함수가 연결되어 있다.

solution 함수
const [a, op, b] = binomial.split(' ');
  • 구조 분해 할당을 사용하여 binomial.split(' ')의 결과를 a, op, b로 분할한다.

return ops[op](+a, +b);
  • ops 객체의 op 키에 해당하는 함수를 호출한다.
  • 여기서 +a+b는 문자열 ab를 숫자로 변환한다.
profile
해내는 사람

0개의 댓글