-
[문제풀이 후기] 프로그래머스 #120863 - 다항식 더하기문제풀이/Programmers 2026. 1. 22. 22:07
https://school.programmers.co.kr/learn/courses/30/lessons/120863
기본 상위 코드
const polynomial = "10x + 10 + x + 1";첫 번째 시도 (결과 : 실패)
접근 방식
1. split(" ") 으로 분리 후 + 가 아닌 index 요소만 필터링
2. x 항의 x 를 1로 변경한 뒤, 앞의 계수와 곱셈 후 합산
3. x 항의 합산한 값이 있을 때 '합x' 반환
4. x 항과 상수항이 모두 있을 때만 + 로 연결, 아니면 단순 출력const array = polynomial.split(" ").filter((_, index) => index % 2 === 0); const xSum = array .filter((value) => value.includes("x")) .map((value) => value.replace("x", 1)) .map((value) => [...value].reduce((acc, value) => acc * Number(value), 1)) .reduce((acc, value) => acc + value, 0); const constantSum = array .filter((value) => !value.includes("x")) .reduce((acc, value) => acc + Number(value), 0); const x = xSum > 0 ? `${xSum}x` : ""; return Boolean(x) && Boolean(constantSum) ? `${x} + ${constantSum}` : Boolean(x) ? x : constantSum;실패 원인
: 1x 는 x 로 표기되어야 함
: x 항의 계수가 두 자리 이상일 때 처리 누락
두 번째 시도 (결과 : 성공)
접근 방식
1. split(" + ") 로 분리
2. x 항의 x 를 "" 로 변경하여 계수를 추출하고, 계수가 없는 경우 1로 처리
3. 결과 배열 생성
4. 존재하는 항을 결과 배열에 push 한 후 join(" + ")const array = polynomial.split(" + "); const xSum = array .filter((value) => value.includes("x")) .map((value) => value.replace("x", "") || 1) .reduce((acc, value) => acc + Number(value), 0); const constantSum = array .filter((value) => !value.includes("x")) .reduce((acc, value) => acc + Number(value), 0); const result = []; if (xSum) result.push(xSum > 2 ? `${xSum}x` : "x"); if (constantSum) result.push(constantSum); return result.join(" + ");후기
정말 풀이 방식은.. 알면 알 수록 무궁무진하다..
'문제풀이 > Programmers' 카테고리의 다른 글
[문제풀이 후기] 프로그래머스 #120868 - 삼각형의 완성조건 (2) (0) 2026.01.23 [문제풀이 후기] 프로그래머스 #120866 - 안전지대 (0) 2026.01.23 [문제풀이 후기] 프로그래머스 #120861 - 캐릭터의 좌표 (0) 2026.01.22 [문제풀이 후기] 프로그래머스 #120831 - 짝수의 합 (0) 2026.01.09 [문제풀이 후기] 프로그래머스 #120808 - 분수의 덧셈 (0) 2026.01.07