내 코드
def solution(polynomial):
sep = polynomial.split(' + ')
x = 0
num = 0
for i in sep:
if 'x' in i:
if i == 'x':
x += 1
else:
x += int(i.replace('x', ''))
else:
num += int(i)
result = []
if x:
result.append(f"{x}x" if x > 1 else "x")
if num:
result.append(str(num))
return ' + '.join(result)
코드설명
- 문자열 분리: 다항식을 ' + ' 기준으로 분리해 항목별로 리스트로 저장합니다.
- 동류항 계산:
- 항목에 'x'가 포함되면 계수를 추출해 x에 더합니다.
- 상수항은 num에 더합니다.
- 결과 조합:
- x와 num 값에 따라 결과 문자열을 생성하며, x 계수가 1이면 '1x' 대신 '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'
코드설명
- 문자열 분리: ' + '를 기준으로 다항식을 분리합니다.
- 동류항 계산:
- 항목이 숫자이면 상수항 const에 더합니다.
- 'x'이면 xnum을 1 증가시키고, 계수가 있는 경우 xnum에 더합니다.
- 결과 조합:
- xnum과 const 값에 따라 조건문으로 결과를 생성합니다.
- xnum과 const가 각각 0일 경우를 별도로 처리합니다.
특징
- 반복문 내에서 조건을 활용해 코드를 간결화했습니다.
- 동류항 계산을 isdigit과 슬라이싱으로 구현해 깔끔하게 처리했습니다.
두 코드 비교
- 가독성:
내 코드는 동작을 단계별로 나눠 구현해 가독성이 좋습니다.
다른 코드는 조건문을 적극 활용해 코드 길이를 줄였습니다. - 조건 처리:
내 코드는 분리 후 조합 과정에서 조건을 사용해 처리합니다.
다른 코드는 반복문 내에서 조건을 한 번에 처리합니다. - 결과 생성:
내 코드는 결과를 리스트에 추가하고 최종적으로 연결합니다.
다른 코드는 조건문을 통해 문자열을 직접 반환합니다.
결론
두 코드는 모두 문제 요구사항을 충족하며 효율적으로 동류항을 계산합니다.
- 내 코드는 가독성이 뛰어나며 유지보수에 유리합니다.
- 다른 코드는 조건문과 슬라이싱을 적극 활용해 간결함을 강조했습니다.
상황에 따라 코드의 명확성이나 간결성을 우선시하는 방향으로 선택할 수 있습니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 | Python | 저주의 숫자 3 (0) | 2025.01.07 |
---|---|
프로그래머스 | Python | 종이 자르기 (0) | 2025.01.06 |
프로그래머스 | Python | 캐릭터의 좌표 (2) | 2024.12.24 |
프로그래머스 | Python | 로그인 성공? (0) | 2024.12.23 |
프로그래머스 | Python | 직사각형 넓이 구하기 (1) | 2024.12.20 |