본문 바로가기
Javascript/코딩테스트-연습

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

by BeomBe 2024. 4. 3.
반응형

문제 설명

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

 

프로그래머스

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

programmers.co.kr

자세한 문제 설명은 위 링크를 통해 확인해주세요.

나의 풀이

function solution(polynomial) {
  // 모든 식은 더하기이기 때문에 " + "를 기준으로 문자열을 배열로 만들어줍니다.
  const arr = polynomial.split(" + ");

  let xNum = 0;
  let num = 0;

  // 분리해둔 배열을 forEach() 메서드를 이용해 하나씩 확인한다.
  arr.forEach((n) => {
    // includes() 메서드를 이용해 x가 포함되어 있는지 확인한다.
    if (n.includes("x")) {
      // x가 포함되어있다면 replace() 메서드를 이용해 x를 제거해주고
      // 만약 x를 제거하였는데 공백일 경우 "1"을 넣어준다.
      const strVal = n.replace("x", "") || "1";
      // 구한 값을 정수로 바꾸어 더해준다.
      xNum += parseInt(strVal, 10);
    } else {
      // x가 포함되지 않았다면 숫자이므로 정수형으로 바꾸어 더해준다.
      num += parseInt(n);
    }
  });

  let answer = [];
  // "계수 1은 생략합니다." 제한사항을 참고하여
  // 구해둔 xNum이 1을 경우 공백으로 아니면 그대로 입력하고 뒤에 x를 붙여준다.
  if (xNum) answer.push(`${xNum === 1 ? "" : xNum}x`);
  if (num) answer.push(num);

  // 배열을 join() 메서드를 이용해 +를 넣어 문자열로 만들고 반환한다.
  return answer.join(" + ");
}

console.log(solution("3x + 7 + x")); // "4x + 7"
console.log(solution("x + x + x")); // "3x"

 

forEach()

Array 인스턴스의 forEach() 메서드는 각 배열 요소에 대해 제공된 함수를 한 번씩 실행합니다.

const array1 = ['a', 'b', 'c'];

array1.forEach((element) => console.log(element));

// Expected output: "a"
// Expected output: "b"
// Expected output: "c"

 

forEach에 대한 설명은 아래 링크를 참고해주세요.

forEach - MDN

반응형