덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz
가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
quiz
의 길이 ≤ 10quiz | result |
---|---|
["3 - 4 = -3", "5 + 6 = 11"] | ["X", "O"] |
["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] | ["O", "O", "X", "O"] |
입출력 예 #1
입출력 예 #2
💡 문제풀이 과정
- 답안 1번:
quiz
에 담겨있는 식을true
인지false
인지 검증하기 위해서는‘=’
을‘==’
로 바꿔주면 된다. 따라서map()
함수를 통해quiz
배열의 각 원소에 접근하여replace(”=”, “==”)
를 사용한다. 그리고eval()
함수를 사용하면 배열 안의 수식이String type
으로 이루어져 있어도 연산이 가능해진다.eval(수식)이 참이면 ‘O’ 거짓이면 ‘X’
를 반환한다. 아래 예제 참고 ⬇️
console.log(1 + 2 == 2); //false console.log(1 + 2 == 3); //true console.log(eval("1 + 2 == 2")); //false console.log(eval("1 + 2 == 3")); //true
- 답안 2번: 다른 사람의 풀이로
forEach()
반복문과구조분해할당
등을 활용하여 풀이하였다.
✅ 답안 #1
function solution(quiz) {
const mapped = quiz.map((v) => v.replace("=", "=="));
return mapped.map((v) => eval(v) ? "O" : "X");
}
✅ 답안 #2
function solution(quiz) {
let answer = [];
quiz.forEach((val) => {
const [x, sign, y, , z] = val.split(" ");
let sum = 0;
if (sign === "+") sum = Number(x) + Number(y);
else sum = Number(x) - Number(y);
sum === Number(z) ? answer.push("O") : answer.push("X");
});
return answer;
}