def solution(polynomial):
arr = polynomial.replace(" ", "").split("+")
x, num = 0, 0
for i in arr:
if "x" in i:
if len(i) >= 2:
x += int(i[:-1])
else:
x += 1
else:
num += int(i)
if num > 0 and x > 0:
if x == 1:
return "x + "+str(num)
else:
return str(x)+"x + "+str(num)
elif x <= 0:
return str(num)
elif num <= 0:
if x == 1:
return "x"
else:
return str(x)+"x"
1️⃣ 문자열을 "+" 기준으로 분리
2️⃣ 분리한 문자를 배열에 담아 for문에서 하나씩 확인
3️⃣ 만약 배열의 원소가 "x"를 포함하고 있다면 'x항'이라는 뜻. 'x항'의 길이가 2보다 길다면 x의 앞부분에 정수가 온다는 의미. 정수는 분리해서 int로 형변환하여 변수 x에 더해준다.
4️⃣ x를 포함하지 않은 상수항도 num 변수에 따로 저장
⛔ for문 종료
5️⃣ 상황별로 적절한 처리를 통해 결과를 도출한다. 13번 라인, 20번 라인처럼 x항의 계수가 1일 경우를 반드시 따로 처리해 주어야 함을 주의
다른 풀이 방법
def solution(polynomial):
xnum = 0
const = 0
for c in polynomial.split(' + '):
if c.isdigit():
const+=int(c)
else:
xnum = xnum+1 if c=='x' else xnum+int(c[:-1])
if xnum == 0:
return str(const)
elif xnum==1:
return 'x + '+str(const) if const!=0 else 'x'
else:
return f'{xnum}x + {const}' if const!=0 else f'{xnum}x'
🐥자바스크립트
function solution(polynomial) {
let arr = polynomial.split(" + ")
let x = 0
let num = 0
for(let i of arr){
if(i.includes("x")){
i === "x" ? x += 1 : x += parseInt(i);
} else {
num += parseInt(i);
}
}
if(x > 0 && num > 0){
return x === 1 ? "x + " + num.toString() : x.toString() + "x + " + num.toString();
} else if(x == 0){
return num.toString();
} else if(num == 0){
return x === 1 ? "x" : x.toString() + "x";
}
}
1️⃣ 문자열을 " + " 기준으로 분리
2️⃣ 분리한 문자를 배열에 담아 for문에서 하나씩 확인
3️⃣ 만약 배열의 원소가 "x"를 포함하고 있다면 'x항'이라는 뜻. i가 x라면 계수가 1이라는 의미이므로 x에 1을 더해준다. x의 계수가 1이 아닌 경우 정수는 분리해서 parseInt로 형변환하여 변수 x에 더해준다.
4️⃣ x를 포함하지 않은 상수항도 num 변수에 따로 저장
⛔ for문 종료
5️⃣ 상황별로 적절한 처리를 통해 결과를 도출한다. x항의 계수가 1일 경우를 반드시 따로 처리해 주어야 함을 주의