let answer = []
let num1;
let num2;
let operate;
let calcRusult;
// 매개변수로 받은 배열을 for문으로 돌리고
for(let idx = 0; idx < arr.length; idx++) {
if(arr[idx].indexOf('-') !== -1) {
// 각 요소에 있는 연산자를 찾아 operate변수에 저장하였다.
operate = arr[idx][arr[idx].indexOf('-')]
}
if(arr[idx].indexOf('+') !== -1) {
operate = arr[idx][arr[idx].indexOf('+')]
}
// 그리고 연산자를 기준으로 앞의 숫자와 뒤의 숫자를 각각 num1과 num2에 저장하였고
num1 = arr[idx].slice(0, arr[idx].indexOf(operate))
num2 = arr[idx].slice(arr[idx].indexOf(operate) + 1, arr[idx].indexOf('='))
// =을 기준으로 맨 끝의 값에 접근하여 결과값을 calcRusult변수에 저장하였다
calcRusult = arr[idx].slice(arr[idx].indexOf('=') + 1)
// operate변수의 값이 -면 아래의 식이
if(operate === '-') {
answer.push(parseInt(num1) - parseInt(num2) === parseInt(calcRusult) ? "O" : "X")
} else if(operate === '+') {
// operate변수의 값이 +면 아래의 식을 실행하여 answer에 O X를 push하였다.
answer.push(parseInt(num1) + parseInt(num2) === parseInt(calcRusult) ? "O" : "X")
}
}
return answer
테스트는 통과하였으나 제출 및 채점을 누르면 틀렸다는 결과가 떴다. 왜지...
그래서 다른 방법으로 2번째 방법으로 다시 풀어보았다.
let arr = [];
let answer = [];
// 먼저 arr배열에 split메서드로 배열마다 공백 없이 하나씩 요소를 저장한다.
quiz.forEach((x) => {
arr.push(x.split(' '))
})
// for문으로 arr를 돌려
for(let idx = 0; idx < arr.length; idx++) {
if(arr[idx].includes('-')) {
// 숫자부분은 Number메서드로 바꿔서 삼항연산자를 이용해 answer배열에 하나씩 OX를 저장하였다.
answer.push(Number(arr[idx][0]) - Number(arr[idx][2]) == Number(arr[idx][4]) ? "O" : "X")
} else if(arr[idx].includes('+')) {
answer.push(Number(arr[idx][0]) + Number(arr[idx][2]) == Number(arr[idx][4]) ? "O" : "X")
}
}
return answer