그냥 forEach문을 사용해서 각 인덱스를 공백을 기준으로 split한 후
각 인덱스의 계산과 부호를 따져 결과값을 비교한 후 정답이 될 ans배열에 맞게 넣어주면 됨
function solution(quiz) {
ans = [];
quiz.forEach(v => {
res = 0;
quiz1 = v.split(' ')
const X = quiz1[0]
const Y = quiz1[2]
if (quiz1[1] === "+") {
res = Number(quiz1[0]) + Number(quiz1[2])
} else {
res = Number(quiz1[0]) - Number(quiz1[2])
}
res === Number(quiz1[4]) ? ans.push("O") : ans.push("X")
})
return ans
}
독특하고도 명시적인 풀이가 있었다.
function solution(quiz) {
var answer = [];
return quiz.map(t => {
const [calc, result] = t.split(' = ');
const sign = calc.includes('+') ? 1 : -1
const [a, b] = calc.split(sign === 1 ? ' + ' : ' - ');
return +a + (+b * sign) === +result ? 'O' : 'X'
});
}
split을 할 때마다 비구조화 할당으로 split된 값을 계속 나누고 sign에 삼항 연산자를 통한 1, -1 값을 지정해주어 마지막 계산기
return 시엔 양수로만 계산하되 사인을 곱해주는 형식으로 하셨다.
split을 할 떄마다 비구조화 할당으로 배열에 넣어주는 것이 참 참신
여기서,
a와 b 그리고 result애 +를 붙여준 것은 문자를 '정수'로 만들기 위해서이다.