📌 내 코드
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를 반환한다.
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 저주의 숫자 3 (0) | 2024.04.29 |
---|---|
[코딩테스트] 영어가 싫어요 (0) | 2024.04.26 |
[코딩테스트] 숨어있는 숫자의 덧셈 (2) (0) | 2024.04.24 |
[코딩테스트] 합성수 찾기 (0) | 2024.04.18 |
[코딩테스트] 문자열 정렬하기(2) (0) | 2024.04.17 |