한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial
이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다.
polynomial
에 있는 수 < 100polynomial
에 변수는 'x'만 존재합니다.polynomial
은 0부터 9까지의 정수, 공백, ‘x’, ‘+'로 이루어져 있습니다.polynomial
에는 일차 항과 상수항만 존재합니다.polynomial
의 길이 < 50polynomial | result |
---|---|
"3x + 7 + x" | "4x + 7" |
"x + x + x" | "3x" |
function solution(polynomial) {
var answer = '';
let xNum = 0;
let num =0;
if (polynomial.includes(" + ")){
polyArr = polynomial.split(" + ");
} else {
polyArr = polynomial.split(" ");
}
polyArr.forEach((pNum) => {
if (pNum.includes("x")){
pxArr = pNum.split("x");
if (pxArr[0] === '') {
xNum += 1
} else {
xNum += Number(pxArr[0])
}
} //x값 handling
if (!pNum.includes("x")) {
num += Number(pNum); //정수값 handling
}
});
if (xNum !== 0 && num !== 0) {
if (xNum === 1) {
answer += 'x' + ' + ' + String(num)
} else {
answer += String(xNum) + 'x' + ' + ' + String(num)
}
}
else if(xNum !== 0 && num === 0) {
xNum === 1 ? answer += 'x' : answer += String(xNum) + 'x'
}
else if (xNum === 0 && num !== 0) {
answer += String(num)
}
else {
answer = '0'
}
return answer;
}
난이도가 어려운 문제라기 보다는.. 조건을 다양한 방면으로 따져봐야해서 까다로웠던 문제였다.
입력 변수로 들어오는 polynomial
다항식의 형태에 대해서 따져야 한다.
다항식 또는 단항식(x)이 들어왔을때의 케이스들을 따져야 한다.
만약 '+' 가 포함된 다항식 형태로 들어왔을때는, split(" + ")
해줘야한다.
단항식이 들어왔을때는 공백 split을 해주면 된다.
xNum
값이 1일때 계수 생략하는 부분이 필요하다.