인간이 읽을 수 있는 정수 표현 만들기: 완전 가이드

숫자를 더 이해하기 쉬운 형식으로 표시해야 하는 상황에 직면한 적이 있나요? 아마도 숫자 형태에 익숙하지 않은 청중에게 데이터를 제공해야 할 수도 있습니다. 이러한 경우 정수를 인간이 읽을 수 있는 표현으로 변환하면 명확성을 크게 향상할 수 있습니다. 이 작업은 간단해 보일 수 있지만 숫자를 정확하게 단어로 표현하는巧妙한 설계의 기능이 필요합니다.

문제

우리가 해결해야 할 과제는 정수 값을 설명적인 문자열 형태로 변환하는 함수 만들기입니다. 이 함수가 달성해야 할 몇 가지 예는 다음과 같습니다:

  • humanReadable(1)은 **“하나”**를 반환해야 합니다.
  • humanReadable(53)은 **“오십삼”**을 반환해야 합니다.
  • humanReadable(723603)은 **“칠십이만 삼백삼”**을 반환해야 합니다.
  • humanReadable(1456376562)은 **“십사억 오천육백삼십칠만 육천오백육십이”**를 반환해야 합니다.

이런 함수가 왜 필요한지 궁금할 것입니다. 사실, 이러한 유형의 알고리즘은 사용자 인터페이스에서 보고서 생성에 이르기까지 실제 소프트웨어 개발에서 여러 가지 응용 프로그램이 있습니다.

해결 접근 방법

humanReadable 함수를 구현하기 위해 과정이 관리 가능한 단계로 나누는 것이 중요합니다. 다음은 이 문제를 해결하기 위한 구조적 접근 방식입니다:

1. 숫자 구조 이해하기

코딩하기 전에 숫자가 어떻게 구성되는지 이해하는 것이 중요합니다:

  • 단위: 0-19는 고유한 이름이 있습니다 (예: 하나에서 열아홉).
  • 십의 자리: 20, 30, …, 90은 특정 용어를 가지고 있습니다 (예: 이십, 삼십 등).
  • 백과 천의 자리: 100부터는 필요한 경우 ‘그리고’를 사용하여 이름을 구성합니다 (예: 백과 삼).

2. 함수 구현하기

다음은 이 기능을 코드로 작성하는 기본 개요입니다:

단계별 구현

  • 기본 사례: 0에서 19까지의 숫자를 직접 처리합니다.
  • 십의 자리 및 그 이상: 십의 자리와 그 이상의 기호에 대한 추가 매핑을 만듭니다.
  • 재귀적 분할: 더 큰 숫자를 관리할 수 있는 부분(예: 천, 백만)으로 나눕니다.
def humanReadable(number):
    if 0 <= number < 20:
        return unique_names[number]
    elif 20 <= number < 100:
        return tens_names[number // 10] + ('' if number % 10 == 0 else '-' + unique_names[number % 10])
    elif 100 <= number < 1000:
        return unique_names[number // 100] + '백' + ('' if number % 100 == 0 else ' 그리고 ' + humanReadable(number % 100))
    # 계속해서 천과 백만에 대해 추가

3. 예제 구현

다음은 여러분에게 견고한 출발점을 제공하는 전체적인 뼈대 구조입니다:

unique_names = ["영", "하나", "둘", "셋", "넷", "다섯", "여섯", "일곱", "여덟", "아홉", "열",
                "열하나", "열두", "열셋", "열넷", "열다섯", "열여섯", "열일곱", "열여덟", "열아홉"]
tens_names = ["", "", "이십", "삼십", "사십", "오십", "육십", "칠십", "팔십", "구십"]

def humanReadable(number):
    if number < 20:
        return unique_names[number]
    elif number < 100:
        return tens_names[number // 10] + ('' if number % 10 == 0 else '-' + unique_names[number % 10])
    # 백, 천, 백만을 위한 더 많은 사례 추가...

4. 함수 테스트하기

여러 테스트 케이스를 실행하여 함수가 지정된 모든 정수를 올바르게 처리하는지 확인하세요:

print(humanReadable(1))          # "하나"
print(humanReadable(53))         # "오십삼"
print(humanReadable(723603))     # "칠십이만 삼백삼"
print(humanReadable(1456376562)) # "십사억 오천육백삼십칠만 육천오백육십이"

결론

이렇게 해서, 정수를 ‘인간이 읽을 수 있는’ 표현으로 만드는 것은 단순한 지적 운동일 뿐만 아니라 많은 프로그래밍 시나리오에서 실제 유용한 도구가 됩니다. 여기서 설명한 구조적 접근 방식을 따르면 이 코딩 도전을 마스터하는 데 큰 도움이 될 것입니다.

이제 코딩 환경을 잡고 이 재미있고 유용한 기능을 오늘 구현해 보세요!