문제풀이 - 다항식 더하기

준성·2023년 11월 28일
0
post-thumbnail

문제를 풀어봤던걸 서술해보고 느낀점을 정리해본다 😭🔥🔥🔥

1. 문제 내용


2. 나의 생각


일단 문제가 길어서 사실 조금 버거운거 아닌가 싶었던 문제.. 자세히 보면서 확인해보니
쉽게 생각해보면 X의 값들 정수 값 을 나눠 더한 문자열을 새로 반환하면 된다고 생각했다.
곱셈이나 나눗셈같은 기호는 없고 오로지 덧셈만 있으며 음의 정수는 없기에 덧셈만 하면 된다고 생각했다
그렇기에 일단 x를 포함한 문자열, 정수만 포함한 문자열을 나누고 둘이 더하기로 했다

3. 문제 풀이

function solution(polynomial) {
  const newArr = polynomial.split(' + ')
  // 공백과 + 기준으로 새로운 배열을 반환
  const xAnswer = newArr.filter((v) => v.includes('x')).map((v) => v.replace('x', '') || '1').reduce((acc, cur) => acc + Number(cur), 0)
  // x항만 뽑아 더한 값들을 새로운 변수에 더함
  const numAnswer = newArr.filter((v) => !v.includes('x')).reduce((acc, cur) => acc + Number(cur), 0)
  // 정수 값만 뽑아 더한 값들을 새로운 변수에 더함

  return numAnswer === 0 ? `${xAnswer}x` :`${xAnswer}x + ${numAnswer}`
  // 정수값이 0 일때 다르게 출력
}

테스트 케이스는 통과했지만 전체 문제에서 틀린 케이스가 나왔다. x항이 없을 때 x항이 1일때 조건들이 있기에
전체 통과를 못했던 것 같아 코드를 수정했다.

4. 수정

let answer = []
  if(xAnswer){
    if(xAnswer === 1){
      answer.push('x')
    }else{
      answer.push(`${xAnswer}x`)
    }
  }
  if(numAnswer){
    answer.push(numAnswer)
  }
  return answer.join(' + ')

아예 새로운 배열을 만들어 조건문을 사용하여 X항만 존재할때와 정수만 존재할때 또는 X항이 1일 때를 구분하여
배열에 push 매서드를 이용하여 결과값을 리턴했다. 그리고 배열에 x항과 정수가 둘다 존재한다면
join 메서드를 이용해 공백과 + 기호를 같이 리턴하도록 코드를 작성했다.

5. 전체 코드

function solution(polynomial) {
  const newArr = polynomial.split(' + ')
  const xAnswer = newArr.filter((v) => v.includes('x')).map((v) => v.replace('x', '') || '1').reduce((acc, cur) => acc + Number(cur), 0)
  const numAnswer = newArr.filter((v) => !v.includes('x')).reduce((acc, cur) => acc + Number(cur), 0)
  let answer = []
  
  if(xAnswer){
    if(xAnswer === 1){
      answer.push('x')
    }else{
      answer.push(`${xAnswer}x`)
    }
  }
  if(numAnswer){
    answer.push(numAnswer)
  }
  
  return answer.join(' + ')
}
profile
코드를 그리다.

0개의 댓글