OX퀴즈

민태영·2023년 6월 3일
0

문제) 덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.

1) 첫시도

    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번째 방법으로 다시 풀어보았다.

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
profile
꿈을 꾸는 개발자

0개의 댓글