Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 키스 수(Keith Number)를 찾는 방법

키스 수(Keith Number)란 무엇인가?

키스 수(Keith Number)는 자신의 각 자릿수로 시작하는 수열 속에 자기 자신이 다시 등장하는 특별한 성질을 가진 수입니다. 수열의 각 항은 바로 앞에 있는 자릿수 개수만큼의 항들을 더해 만듭니다.

예를 들어 두 자릿수 14는 다음과 같은 과정을 거칩니다.

  • 1 + 4 = 5
  • 4 + 5 = 9
  • 5 + 9 = 14

수열이 원래 수인 14에 도달했으므로 14는 키스 수입니다. 대표적인 키스 수로는 14, 19, 28, 47, 61, 75 등이 있습니다.

파이썬 구현 코드

다음 파이썬 코드를 사용하면 어떤 수가 키스 수인지 손쉽게 판별할 수 있습니다.

def is_keith_number(n):
    # 먼저 모든 자릿수를 배열로 만든 뒤 합산하여 자릿수의 합을 구합니다
    c = str(n)
    a = list(map(int, c))
    b = sum(a)

    # 이제 이 수가 키스 수인지 확인합니다
    # 예를 들어 14가 키스 수인 이유는 다음과 같습니다:
    # 1+4 = 5
    # 4+5 = 9
    # 5+9 = 14

    while b < n:
        a = a[1:] + [b]
        b = sum(a)

    return (b == n) & (len(c) > 1)
print(is_keith_number(14))

실행 결과

위 코드를 실행하면 다음과 같은 출력을 얻습니다.

True

코드 동작 원리

먼저 입력받은 수를 문자열로 변환한 뒤 각 자릿수를 정수 리스트로 만들고 그 합을 계산합니다. 이후 while 루프에서는 가장 오래된 자릿수를 제거하고 새로 계산된 합을 리스트 끝에 추가하며 수열을 확장합니다. 이 과정을 반복하여 누적합이 원래 수와 같아지면 키스 수로 판별됩니다. 마지막 조건 len(c) > 1은 한 자릿수는 키스 수에서 제외하기 위한 장치입니다.