https://school.programmers.co.kr/learn/courses/30/lessons/120863
def solution(polynomial):
terms = polynomial.split(' + ')
x_sum = 0
const_sum = 0
for term in terms:
if 'x' in term:
coeff = term.replace('x', '')
x_sum += int(coeff) if coeff else 1
else:
const_sum += int(term)
result = []
if x_sum:
result.append(f"{x_sum}x" if x_sum > 1 else "x")
if const_sum:
result.append(str(const_sum))
return ' + '.join(result)
terms
변수에 ' + '
를 기준으로 항들을 나눈 값을 담아둔다.x
항의 계수와 상수항 합을 저장할 변수 초기화하고, 각 항을 하나씩 확인한다.x
가 있는 항은 계수를 추출해야하니 replace()
사용해서 계수만 추출하는데, x
만 있었다면 생략된 계수인 1
을 대입한다.x
항이 존재하면 추가하는데, 계수가 1
일 경우에는 1x
가 아니라 x
로 표현하게 했고, 상수항은 존재하면 그대로 추가했다.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'
x
의 계수를 xnum + int(c[:-1])
로 추출했다.def solution(polynomial):
x_sum, const_sum = 0, 0
for term in polynomial.split(' + '):
if 'x' in term:
coeff = term[:-1] # 'x'를 제외한 부분
x_sum += int(coeff) if coeff else 1 # 계수가 1인 경우 처리
else: # 상수항이면 더해주기
const_sum += int(term)
# 결과 문자열 조합
parts = []
if x_sum:
parts.append(f'{x_sum}x' if x_sum > 1 else 'x')
if const_sum:
parts.append(str(const_sum))
return ' + '.join(parts)
xnum == 1
등 조건 분기를 축소하고, 삼항 연산을 더 최소화할 수 있었다.피드백은 언제나 환영입니다 :)