function solution(polynomial) {
const polyArr = polynomial.split("+").map(v => v.trim()).map(v => v === 'x' ? '1' + v : v);
const xArr = [];
const number = [];
polyArr.map(v => v.match(/[0-9]+[x]/g) ? xArr.push(v.replace('x', "")) : number.push(v));
const xNumSum = xArr.length > 0 ? xArr.reduce((a, b) => Number(a) + Number(b)) : '';
const numSum = number.length > 0 ? number.reduce((a, b) => Number(a) + Number(b)) : '';
if (xNumSum === '1') {
return xNumSum && numSum ? `x + ${numSum}` : xNumSum && !numSum ? `x` : `${numSum}`;
} else {
return xNumSum && numSum ? `${xNumSum}x + ${numSum}` : xNumSum && !numSum ? `${xNumSum}x` : `${numSum}`;
}
}
์์ ๋ณ๋ก ์์ด๋ ต๋ค ํ๋ค๊ฐ 1x ๊ฐ ๋์ค๋ ์ํฉ์ ์ ํํ ๊ณ ๋ ค ์ํด์ ์๊ฐ์ด ์ค๋๊ฑธ๋ ธ๋ค.
์ฒจ์ '1x' -> 'x' ๋ก replace ํ๋๋ฐ, ๋์ค์ ๋ณด๋ 11x๋ ๋ณ๊ฒฝ๋จ.
x๊ฐ 1์ธ ์ํฉ์์
xํญ๊ณผ ์์ ํญ์ด ๋ ๋ค ์๋ ๊ฒฝ์ฐ /
ํ๋์ฉ๋ง ์๋ ๊ฒฝ์ฐ ์ค xํญ๋ง ์๋ ๊ฒฝ์ฐ์๋ x ๋ง ์ถ๋ ฅ๋๊ฒ ํด์ผํจ.
x๊ฐ 1์ด ์๋ ์ํฉ
xํญ๊ณผ ์์ํญ์ด ๋ ๋ค ์๋ ๊ฒฝ์ฐ /
ํ๋์ฉ๋ง ์๋ ๊ฒฝ์ฐ - > reduce ํ ์๋ฅผ ์์ ๋ถ์ฌ์ค.
1x, 11x, 10x, ๋ค๋ฅธ ์x, 1x + ์์, ๋ค๋ฅธ์x + ์์, ์์๋ง
์ด ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ผ๋ํด๋๊ณ ์ฝ๋๋ฅผ ์ง์ผํ๋ค.
(0์ ์๋์ด)
โ ์ ๊ท์์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ ์ ์๊ฒ ๋๋ค.
/[0-9][x]/g => 123x 9x 43x 10x
/[0-9]+[x]/g => 123x 9x 43x 10x
๋ช ํ์ด์ง ์์๋๋ฐ ์ด์ ๋์ด ๋ณด์ธ๋ค....!!!