function solution(polynomial) {
const polyArr = polynomial.split(" + ");
let xNum = 0;
let num = 0;
polyArr.forEach((item) => {
if(item.includes("x")){
const xArr = item.split("x");
if(xArr[0] === ""){
xNum += 1;
}
if(xArr[0] !== ""){
xNum += Number(xArr[0]);
}
}
if(!item.includes("x")){
num += Number(item);
}
})
if(xNum !== 0 && num !== 0){
if(xNum === 1){
return `x + ${num}`;
}
return `${xNum}x + ${num}`;
}
if(xNum !== 0 && num === 0){
if(xNum === 1){
return "x";
}
return `${xNum}x`;
}
if(xNum === 0 && num !== 0){
return `${num}`;
}
if(xNum === 0 && num === 0){
return "0";
}
}
코드가 길긴한데,직관적이고 이해가 쉽게 짰다고 생각한다...
아마 몇몇 테이스트 케이스에서 통과가 안되신 분들은 문제 조건 중
계수 1은 생략한다
를 처리하지 않으셨기 때문이라고 생각한다.
x
가 존재하는 경우에 대해서 처리를 해주시면, 모든 케이스가 통과될 것이다.
return
이 들어있는 조건문들은 줄이고자 한다면 더 줄일 수 있을 것 같다.
function solution(polynomial) {
const polyArr = polynomial.split(" + ");
let xNum = 0;
let num = 0;
polyArr.forEach((item) => {
if(item.includes("x")){
const xArr = item.split("x");
if(xArr[0] === ""){
xNum += 1;
}
if(xArr[0] !== ""){
xNum += Number(xArr[0]);
}
}
if(!item.includes("x")){
num += Number(item);
}
})
if(xNum !== 0 && num !== 0){
return xNum === 1 ? `x + ${num}` : `${xNum}x + ${num}`;
}
if(xNum !== 0 && num === 0){
return xNum === 1 ? "x" : `${xNum}x`;
}
if(xNum === 0 && num !== 0){
return `${num}`;
}
if(xNum === 0 && num === 0){
return "0";
}
}