한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 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';
}