한 걸음씩

[프로그래머스][JS] 다항식 더하기 본문

Programmers

[프로그래머스][JS] 다항식 더하기

winter17 2023. 7. 4. 16:50

https://school.programmers.co.kr/learn/courses/30/lessons/120863

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정

function solution(polynomial) {
    const arr = [polynomial].join(' ').split(' ').filter(item => item !== '+')
    let x = 0
    let num = 0
    for (let i = 0; i < arr.length; i++){
        if (arr[i].includes('x')){ // 'x'가 포함되어 있는 경우
            if (arr[i] === 'x'){
                x += 1
            }else{ // x는 버리고 나머지 합쳐서 정수로 변환
               const xNum = [arr[i]].join('').split('').filter(item => item !== 'x')
               x += parseInt(xNum.join('')) 
            }
        }else{ // 숫자만 있는 경우
            num += parseInt(arr[i])
        }
    }
    // x가 0 또는 1인 경우, num이 0인 경우
    if (x === 1){
        if (num === 0){
            return `x`
        }
        return `x + ${num}`
    }else if (x === 0){
        return `${num}`
    }else if (num === 0){
        return `${x}x`
    }
    // x가 0 또는 1이 아닌 경우 && num이 0이 아닌 경우
    return `${x}x + ${num}` 
}

다항식을 계산하는 부분은 주어진 polynomial 문자열을 배열로 만들어 filter 메서드로 "+"를 다 없애면

배열 안에는 x와 상수값만 남는데 x만 있는 경우 x앞에 숫자가 붙은 경우를 나눠서 계산을 해줬다.

여기까지는 쉽게 풀었는데

마지막에 값을 반환하는 부분에서 꽤나 애를 먹었다.

첫 번째 조건문 : x가 1인 경우는 앞에 1을 생략해야 하는데 이때 상수가 0인 경우도 생각을 해주어야 한다.

두 번째 조건문 : x가 0인 경우는 상수만 반환

세 번째 조건문 : 상수가 0인 경우 x값 반환

위의 조건을 모두 만족하지 못하는 경우에는 x값과 상수 모두 반환


리뷰

문제가 어렵다기보다 테스트 케이스가 공개 안되어 있어서 어디서 틀렸는지 모르는 게 제일 힘든 것 같다.

마지막 조건문 처리하는 게 좀 까다로웠다