본문 바로가기
기초다지기/JS 코딩테스트

javaScript 배열 문자열 연산자 t/f 구하기 (ox퀴즈)

by 김빵그 2023. 12. 11.

문제 

수식이 들어있는 배열이 매개변수로 주어질 때 수식이 옳다면 O 틀리면 X 리턴

풀이 

function solution(quiz) {
    const answer = quiz.map((q)=>{
        const [left,right] = q.split('=')
        console.log(left,right)
        if(left.indexOf('+') > -1){
            const [leftValue1,leftValue2] = left.split(' + ').map(v=>Number(v))
            return leftValue1 + leftValue2 === Number(right) ? 'O' : 'X'
        }
        else{
            const [leftValue1,leftValue2] = left.split(' - ').map(v=>Number(v))
            return leftValue1 - leftValue2 === Number(right) ? 'O' : 'X'
        }
    })
    return answer;
}
  • answer : 각 테스트 케이스에 대한 결과를 저장할 배열 
  • 분해할당 [left,right] 를 사용하여 = 을 기준으로 left, right로 할당한다
  • 식에 + 가 있는지 없는지 확인 
    • + 기호를 기준으로 왼쪽의 연산자를 나눈후 숫자로 변환 
    • 더한 결과가 같은지 확인하여 OX 변환 
    • - 기호도 위와 동일 

다른 풀이

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'
    });
}
  • sign : 삼항연삱자로 간결하게 표현 
    • includes를 사용하여 해당 텍스트가 들어있는지 확인하여 
    • 문자열 비교하여 원하는 결과 리턴
function solution(quiz) {
    const answer = [];
    quiz.forEach((val) => {
        const [x, sign, y, , z] = val.split(" ");
        const sum = sign === "+" ? Number(x) + Number(y) : Number(x) - Number(y);
        answer.push(sum === Number(z) ? "O" : "X");
    });
    return answer;
}
  • split 된 값을 각 변수에 할당 
  • sign 값을 비교하여 각 변수를 계산 
function solution(quiz) {
  return quiz
    .map((el) => el.split(" = "))
    .map((el) => {
      return eval(el[0]) == el[1] ? "O" : "X";
    });
}
function solution(quiz) {
    var answer = quiz.map(item=> {
        const [left,right] = item.split("=");
        return eval(left) == right ? "O" : "X";        
    });
    return answer;
}