프로그래머스 | Python | 다음에 올 숫자

2025. 1. 17. 09:23·프로그래머스

 

 

프로그래머스

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

programmers.co.kr

내코드

def solution(common):
    diff = common[1] - common[0]
    if common[1] + diff == common[2]:  # 등차수열 확인
        return common[-1] + diff
    else:  # 등비수열인 경우
        ratio = common[1] // common[0]
        return common[-1] * ratio

코드설명

  1. 등차수열 확인:
    common[1] - common[0] 값을 diff로 저장하고, 이를 이용해 등차수열인지 확인합니다.
    만약 common[1] + diff == common[2]라면 등차수열이므로, 마지막 원소에 diff를 더한 값을 반환합니다.
  2. 등비수열 확인:
    등차수열이 아니라면 등비수열이라고 가정합니다.
    이때, common[1] // common[0] 값을 ratio로 저장하고, 마지막 원소에 ratio를 곱한 값을 반환합니다.

특징

  • 가독성: diff와 ratio라는 변수를 사용해 코드의 의미를 명확히 했습니다.
  • 효율성: 불필요한 반복 연산을 줄여 계산 속도를 개선했습니다.
  • 유연성: 등차와 등비를 모두 정확히 처리할 수 있는 구조로 설계했습니다.

다른 코드

def solution(common):
    if common[1] - common[0] == common[2] - common[1]:  # 등차수열 확인
        return common[-1] + (common[1] - common[0])
    else:  # 등비수열인 경우
        return common[-1] * (common[1] // common[0])

코드설명

  1. 등차수열 확인:
    common[1] - common[0]과 common[2] - common[1]를 비교해 등차수열 여부를 판단합니다.
    등차수열이라면 마지막 원소에 (common[1] - common[0])를 더해 반환합니다.
  2. 등비수열 확인:
    등차수열이 아니라면 등비수열로 간주합니다.
    이때 (common[1] // common[0])을 계산해 마지막 원소에 곱한 값을 반환합니다.

특징

  • 비교를 직접적으로 수행해 코드의 간결성을 높였습니다.
  • 가독성이 조금 떨어질 수 있지만, 구현이 직관적입니다.

두 코드 비교

  1. 가독성:
    첫 번째 코드(내코드)는 변수 diff와 ratio를 사용해 코드의 목적을 명확히 드러냅니다.
    반면, 두 번째 코드는 계산 과정을 코드 내에서 직접 수행해 상대적으로 덜 직관적일 수 있습니다.
  2. 효율성:
    두 코드 모두 비슷한 효율성을 가집니다. 다만, 첫 번째 코드는 변수에 값을 저장하여 중복 계산을 방지합니다.
  3. 작성 편의성:
    두 번째 코드는 간단히 작성할 수 있으나, 길어질 경우 가독성 저하가 우려됩니다.

결론

첫 번째 코드(내코드)는 변수명을 활용해 가독성과 유지보수성을 높였으며, 연산 효율성도 뛰어납니다.
두 번째 코드는 짧고 간결하지만, 가독성과 유연성 면에서는 첫 번째 코드보다 다소 부족할 수 있습니다.

필요에 따라 상황에 맞는 코드를 선택해 활용하면 좋을 것 같습니다! 

'프로그래머스' 카테고리의 다른 글

프로그래머스 | Python | 안전지대  (1) 2025.01.20
프로그래머스 | Python | 연속된 수의 합  (2) 2025.01.17
프로그래머스 | Python | 특이한 정렬  (1) 2025.01.16
프로그래머스 | Python | 문자열 밀기  (1) 2025.01.15
프로그래머스 | Python | 유한소수 판별하기  (0) 2025.01.13
'프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | Python | 안전지대
  • 프로그래머스 | Python | 연속된 수의 합
  • 프로그래머스 | Python | 특이한 정렬
  • 프로그래머스 | Python | 문자열 밀기
audwndl
audwndl
audwndl 님의 블로그 입니다.
  • audwndl
    audwndl 님의 블로그
    audwndl
    • 분류 전체보기 (59)
      • 파이썬 (31)
      • 이게뭐야? (1)
      • 왜안돼? (1)
      • 프로그래머스 (26)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
audwndl
프로그래머스 | Python | 다음에 올 숫자
상단으로

티스토리툴바