코딩테스트
[코딩테스트] 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를 반환한다.