문제
수식이 들어있는 배열이 매개변수로 주어질 때 수식이 옳다면 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;
}
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
javaScript 2차원 배열의 계산 (0) | 2023.12.13 |
---|---|
javaScript 정수 배열 최소공배수 구하기 (0) | 2023.12.12 |
javaScript 최빈값 구하기 (1) | 2023.12.07 |
javaScript 그리디 알고리즘으로 최적해 구하기 (1) | 2023.11.29 |
javaScript 이동시 사용해야하는 최소 건전지 양 구하기 (1) | 2023.11.28 |