코딩테스트

[코딩테스트] OX퀴즈

홍시_코딩기록 2024. 5. 4. 00:49

 

 

📌 내 코드

function solution(quiz) {
    let result = []
    quiz.forEach((item) => {
        const parts = item.split("=")
        const func = new Function('return ' + parts[0]);
        result.push(func() === parseInt(parts[1]) ? "O" : "X")
    })
    return result
}

- =을 기준으로 계산식과 값을 나누어서 값이 맞는지 비교를 했다.

- 처음엔 문자열 계산식을 사용할 수 있는 eval() 을 사용했는데 여러 이유로 위험한 함수여서

 사용하지 않고 대신 new Function()을 사용하여 계산식을 계산했다.

 

 

📌 다른 사람 코드

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'
    });
}

- 계산식을 함수로 바꾸어서 사용하는게 아닌

- 연산 기호 +를 확인한 뒤 다시 +, - 연산자를 기준으로 a, b에 숫자를 할당하고

- 계산식과 값이 맞는지 확인하고 o, x를 반환한다.