프로그래머스

프로그래머스 | Python | 다항식 더하기

audwndl 2024. 12. 26. 17:24

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

내 코드

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)

코드설명

  1. 문자열 분리: 다항식을 ' + ' 기준으로 분리해 항목별로 리스트로 저장합니다.
  2. 동류항 계산:
    • 항목에 'x'가 포함되면 계수를 추출해 x에 더합니다.
    • 상수항은 num에 더합니다.
  3. 결과 조합:
    • x와 num 값에 따라 결과 문자열을 생성하며, x 계수가 1이면 '1x' 대신 'x'로 처리합니다.
  4. 최종 출력: 정리된 다항식을 ' + '로 연결해 반환합니다.

특징

  • 가독성을 높이기 위해 분리와 조합 과정을 명확히 나눴습니다.
  • 계수 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'

코드설명

  1. 문자열 분리: ' + '를 기준으로 다항식을 분리합니다.
  2. 동류항 계산:
    • 항목이 숫자이면 상수항 const에 더합니다.
    • 'x'이면 xnum을 1 증가시키고, 계수가 있는 경우 xnum에 더합니다.
  3. 결과 조합:
    • xnum과 const 값에 따라 조건문으로 결과를 생성합니다.
    • xnum과 const가 각각 0일 경우를 별도로 처리합니다.

특징

  • 반복문 내에서 조건을 활용해 코드를 간결화했습니다.
  • 동류항 계산을 isdigit과 슬라이싱으로 구현해 깔끔하게 처리했습니다.

두 코드 비교

  • 가독성:
    내 코드는 동작을 단계별로 나눠 구현해 가독성이 좋습니다.
    다른 코드는 조건문을 적극 활용해 코드 길이를 줄였습니다.
  • 조건 처리:
    내 코드는 분리 후 조합 과정에서 조건을 사용해 처리합니다.
    다른 코드는 반복문 내에서 조건을 한 번에 처리합니다.
  • 결과 생성:
    내 코드는 결과를 리스트에 추가하고 최종적으로 연결합니다.
    다른 코드는 조건문을 통해 문자열을 직접 반환합니다.

결론

두 코드는 모두 문제 요구사항을 충족하며 효율적으로 동류항을 계산합니다.

  • 내 코드는 가독성이 뛰어나며 유지보수에 유리합니다.
  • 다른 코드는 조건문과 슬라이싱을 적극 활용해 간결함을 강조했습니다.

상황에 따라 코드의 명확성이나 간결성을 우선시하는 방향으로 선택할 수 있습니다.