한 걸음씩
[프로그래머스][JS] 다항식 더하기 본문
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값과 상수 모두 반환
리뷰
문제가 어렵다기보다 테스트 케이스가 공개 안되어 있어서 어디서 틀렸는지 모르는 게 제일 힘든 것 같다.
마지막 조건문 처리하는 게 좀 까다로웠다
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 분수의 덧셈 (0) | 2023.07.05 |
---|---|
[프로그래머스][JS] 최빈값 구하기 (0) | 2023.07.04 |
[프로그래머스][JS] OX퀴즈 (0) | 2023.07.03 |
[프로그래머스][JS] 코드 처리하기 (0) | 2023.07.03 |
[프로그래머스][JS] K번째수 (0) | 2023.07.02 |