다항식 더하기, Javascript

cptkuk91·2023년 2월 15일
0

Algorithm

목록 보기
135/161
post-custom-banner

문제

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"을 반환합니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)
post-custom-banner

0개의 댓글