간단한 식 계산하기
문제 설명
문자열 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로 접근한 후에 함수를 실행하는 방법의 풀이. 이렇게 경우에 따라 객체로 접근하는 풀이 방법 나중에 꼭 한번 써보고 싶다!🥺
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.07.15 Programmers_l로 만들기 (0) | 2023.07.15 |
---|---|
[TIL] 2023.07.03 Programmers_배열의 원소만큼 추가하기 (0) | 2023.07.04 |
[TIL] 2023.06.22 Programmers_A 강조하기 (0) | 2023.06.22 |
[TIL] 2023.06.13 Programmers_수열과 구간 쿼리 1 (0) | 2023.06.13 |
[TIL] 2023.06.10 Programmers_왼쪽 오른쪽 (3) | 2023.06.10 |
댓글