본문 바로가기
알고리즘/Programmers

[TIL] 2023.06.30 Programmers_간단한 식 계산하기

by heereal 2023. 6. 30.

간단한 식 계산하기

문제 설명

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

 

 

입출력 예

binomial result
"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 합니다.

 

나의 풀이

function solution(binomial) {
    const [a, op, b] = binomial.split(" ");
    switch (op) {
        case "+":
            return parseInt(a) + parseInt(b);
        case "-":
            return parseInt(a) - parseInt(b);
        case "*":
            return parseInt(a) * parseInt(b);
    }
}

구조분해할당과 switch문을 이용해서 풀었다.

 

 

다른 사람의 풀이 01

function solution(binomial) {
    const [a,ex,b] = binomial.split(" ");    
    return (ex === "+")? +a+ +b : (ex === "-")? a - b : a*b
}

switch문 대신 삼항 연산자를 이용해서도 풀 수 있다! a와 b가 문자열인데 덧셈의 경우에는 숫자로 계산되는 게 아니라 문자열로 더해지기 때문에 덧셈의 경우에만 a와 b를 숫자로 전환했다.

 

 

다른 사람의 풀이 02

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);
}

연산자에 따른 경우를 객체로 미리 생성해서 객체의 value로 접근한 후에 함수를 실행하는 방법의 풀이. 이렇게 경우에 따라 객체로 접근하는 풀이 방법 나중에 꼭 한번 써보고 싶다!🥺

 

 

댓글