https://school.programmers.co.kr/learn/courses/30/lessons/120863?language=javascript#
function solution(polynomial) {
let splitWord = polynomial.split(" + ");
let xResult = 0, pureResult = 0;
splitWord.forEach((item) => {
console.log(item);
if(item.includes("x")){
let tmp = item.split("x");
console.log(tmp);
if(tmp[0] === ""){
xResult += 1;
} else if(tmp[0] !== ""){
xResult += Number(tmp[0]);
}
} else {
pureResult += Number(item);
}
})
// xResult 가 1인 경우를 생각해야 한다. 만약 xResult가 1인 경우, 1x가 아니라 x다.
if(xResult !== 0 && pureResult !== 0){
return xResult === 1 ? `x + ${pureResult}` : `${xResult}x + ${pureResult}`
} else if(xResult !== 0 && pureResult === 0){
return xResult === 1 ? `x` : `${xResult}x`
} else if(xResult === 0 && pureResult !== 0){
return `${pureResult}`
} else if(xResult === 0 && pureResult === 0){
return "0"
}
}
split "+" 를 통해서 문자열을 배열에 넣어줬습니다. ["3x", "7", "x"]와 같은 형태가 됩니다. x가 포함된 문자열을 담아줄 곳과, x가 제외된 순수 문자("7")과 같은 형태를 담아줄 선언을 합니다.
forEach를 통해 각각 실행시킵니다. 만약 "x"가 포함됐다면, split을 통해 "x"를 제외시킵니다. 주의 사항으로 "x"의 경우 "x"를 제외 시키면 빈 문자열 ""과 같은 형태로 나타납니다. 이때 xResult에 += 1을 통해 숫자를 담아줍니다. 반대로 "2x"와 같은 앞에 숫자가 붙은 경우에는 "x"를 제외시키면 ""빈문자열로 나타나는게 아니라, "2"라는 형태로 나타나기 때문에, xResult에 Number("2") === 2를 더해줍니다. 원래 x가 제외된 순수 문자였다면 pureResult에 담아줍니다. 이후 결과반환을 하면 됩니다. 만약 xResult가 0이 아니고, pureResult가 0이 아닌 경우를 보겠습니다. 주의사항으로는 xResult가 1인 경우에 발생합니다. xResult가 1인 경우 "1x"가 아니라 "x"입니다. 따라서 xResult가 1인 경우x + ${pureResult}를 통해서 결과값을 반환하고, x가 "2x", "3x"등 숫자가 붙는 경우
${x}x + ${pureResult}를 통해서 결과를 반환합니다. xResult가 0이 아니고, pureResult가 0인 경우에도 같습니다. 반대로 xResult가 0인 경우 쉽게 pureResult만 출력하면 됩니다. 둘다 0인 경우에는 "0"을 반환합니다.