프로그래머스, 자바스크립트) 다항식 더하기

2024. 3. 19. 10:13·개발/알고리즘(코딩테스트)

문제

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

 

프로그래머스

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

programmers.co.kr

 

풀이

음...더 좋은 방법을 찾고싶다.

일단 "3x + 1" 이런식으로 연산기호 사이에 공백이 존재하니 공백을 기준으로 쪼개 배열을 만든다. => ["3x","+","1"]

3x 같이 일차항인 경우 x를 포함하고 있다면 ~ 으로 조건을 달아 일차항에 누적해준다. 

그외는 isNaN의 반례, 즉 기호가 아닌 숫자가 오는 경우 상수항에 더해준다. 

isNaN(+) => true

isNaN(7) => false

 

일차항, 상수항 둘다 있다면 ax + b 꼴로 반환, 일차항만 있다면 ax, 상수항만 있다면 b 해준다.

 

+++ 제출 케이스에서 틀렸던 부분인데, 일차항이 1인 경우 1x가 아니라 x로 1이 생략되게 출력해야 된다. 

일차항이 1인지 확인하는 조건문 추가..

function solution(polynomial) {
  let 상수항 = 0;
  let 일차항 = 0;

  polynomial.split(" ").forEach((term) => {
    if (term.includes("x")) return (일차항 += parseInt(term.split("x")[0] || 1));
    if (!isNaN(term)) return (상수항 += parseInt(term));
  });

  if (일차항 && 상수항) return 일차항 === 1? `x + ${상수항}` :`${일차항}x + ${상수항}`;
  if (일차항) return 일차항 === 1? "x" :`${일차항}x`;
  if (상수항) return `${상수항}`;
}

 

다른 풀이

공백 포함해서 연산기호를 기준으로 쪼갠다(더하기 밖에 없다는 조건이 있음)

=> ["x","1"] 이런식으로 일차항과 상수만 존재

 

x만 걸래낸 후 map으로 돌면서 3x => 3, x => 1 이런식으로 바꾸고 reduce로 누적해준다. 

상수항은 숫자만 걸러내서 누적해준다. 

일차항이 만약 1이라면 x만 넣고 값이 있다면 ax 형식으로 배열에 넣어준다. 

 

그리고 최종 리턴 값으로 배열을 연산기호와 join해서 반환한다! 

function solution(polynomial) {
    const arr = polynomial.split(" + ");
    const xNum = arr
                .filter(n => n.includes("x"))
                .map(n => n.replace('x', '') || '1')
                .reduce((acc, cur) => acc + parseInt(cur, 10), 0);
    const num = arr
                .filter(n => !isNaN(n))
                .reduce((acc, cur) => acc + parseInt(cur, 10), 0);

    let answer = [];
    if(xNum) answer.push(`${xNum === 1 ? "" : xNum}x`);
    if(num) answer.push(num);

    return answer.join(" + ");
}
저작자표시 비영리 변경금지

'개발 > 알고리즘(코딩테스트)' 카테고리의 다른 글

프로그래머스, 자바스크립트) 코드 처리하기  (0) 2024.04.03
프로그래머스, 자바스크립트) OX퀴즈  (0) 2024.03.22
프로그래머스, 자바스크립트) 특이한 정렬  (0) 2024.03.18
프로그래머스, 자바스크립트) 배열 만들기 2  (0) 2024.03.17
프로그래머스, 자바스크립트) 유한소수 판별하기  (0) 2024.03.15
'개발/알고리즘(코딩테스트)' 카테고리의 다른 글
  • 프로그래머스, 자바스크립트) 코드 처리하기
  • 프로그래머스, 자바스크립트) OX퀴즈
  • 프로그래머스, 자바스크립트) 특이한 정렬
  • 프로그래머스, 자바스크립트) 배열 만들기 2
빔네모
빔네모
console.log("빔네모")
  • 빔네모
    bimnemo("개발")
    빔네모
  • 전체
    오늘
    어제
    • 기록 (141) N
      • 기술 (34) N
        • JavaScript (1)
        • TypeScript (9)
        • React.js (10)
        • Next.js (0)
        • 라이브러리,도구 (3)
        • HTML,CSS (2) N
        • CS (5)
        • BE (4)
      • 개발 (95)
        • 프로젝트 (0)
        • 트러블슈팅 (5)
        • 알고리즘(코딩테스트) (90)
      • 정보 (4)
      • 취미 (8)
        • 감상 (8)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
빔네모
프로그래머스, 자바스크립트) 다항식 더하기
상단으로

티스토리툴바