한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial
이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다.
polynomial | result |
---|---|
"3x + 7 + x" | "4x + 7" |
"x + x + x" | "3x" |
function solution(polynomial) {
const result = polynomial.split(" "); // ["3x","+","7","+","x"]
let xValue = 0;
let numberValue = 0;
for(let el of result){
console.log(el);
if(el.includes("x")){
if(el[0] === "x"){
xValue++;
} else {
xValue += el[0];
}
} else if(!el.includes("x") && !(el === "+") && (el > 0)){
numberValue += Number(el);
}
}
if(numberValue === 0){
return `${xValue}x`;
}
return `${xValue}x + ${numberValue}`;
}
${xValue}x + ${numberValue}
의 형태로 리턴하겠금 코드를 짰다.→ 즉 내가 반례를 고려하지 않았고, 가독성도 나쁜 코드를 짰다 😇
💡 생각해야할 조건function solution(polynomial) {
const Newpolynomial = polynomial.split(" "); // ["3x","+","7","+","x"]
let xValue = 0;
let numberValue = 0;
for(let el of Newpolynomial){
//1. x값일때,
if(el.includes("x")){
if(el[0] === "x") xValue++; //1-1.그냥 x라면 === 즉 1x
else xValue += el[0]; //1-2. 3x라면 === 즉 1이상일때
} //2. 상수 값일 때,
else if(!(el === "+") && (el > 0)) numberValue += Number(el);
}
//3. 리턴 조건은 5개로, 각 조건에 맞게 리턴문을 작성한다.
//3-1. x 값 & 상수값 모두 존재
if(xValue > 0 && numberValue > 0) return `${xValue}x + ${numberValue}`;
//3-2. x 값만 존재 & 상수 없음
if(numberValue === 0) return `${xValue}x`;
//3-3. 1x라면 → x만
if(xValue === 1) return `x + ${numberValue}`;
//3-4. 상수값만 존재 & x 값 없음
if(xValue === 0) return `${numberValue}`;
//3-5. x값 & 상수값 모두 없음
if(xValue === 0 && numberValue === 0) return Number(0);
}
function solution(polynomial) {
//1-1. polynomial의 각 요소를 띄여쓰기로 분리하고 "+"가 아닌 요소들만 필터링한다.
polynomial = polynomial.split(' ').filter((e) => e !== '+');
//1-2. 그리고 x값과 상수를 더해줄 변수를 선언한다.
let xNum = 0;
let num = 0;
/* 2. forEach()로 각 요소를 순회 -> forEach() 메서드는 주어진 함수를 배열 요소 각각에 대해 실행 */
polynomial.forEach((e) => {
if (e.includes('x')) {
const x = e.split('x');
if (x[0] === '') xNum++; //2-1. (1)x인경우
if (x[0] !== '') xNum += Number(x[0]); //2-2. 3x인경우
}
if (!e.includes('x')) num += Number(e); //2-3. 상수인 경우
})
//3. 리턴 조건은 5개로, 각 조건에 맞게 리턴문을 작성한다.
//3-1. xValue와 numberValue가 있고 1)xValue가 1인 경우와 2) 1 이상인 경우
if (xNum !== 0 && num !== 0) return xNum === 1 ? `x + ${num}` : `${xNum}x + ${num}`;
//3-2. xValue만 있고 1)xValue가 1인 경우와 2) 1 이상인 경우
if (xNum !== 0 && num === 0) return xNum === 1 ? 'x' : `${xNum}x`;
//3-3. numberValue만 있는 경우
if (xNum === 0 && num !== 0) return `${num}`;
//3-4. xValue와 numberValue 둘다 없는 경우
if (xNum === 0 && num === 0) return '0';
}