[프로그래머스 | Javascript] 코딩테스트 입문 - 다항식 더하기

박기영·2022년 11월 15일
1

프로그래머스

목록 보기
93/159
post-custom-banner

solution

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이 들어있는 조건문들은 줄이고자 한다면 더 줄일 수 있을 것 같다.

return 부분을 줄인 solution

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";
    }
}
profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글