<aside> 💬 lv0, 문자열 처리, 숫자 변환

숫자를 한글로 변환

문제 설명

주어진 정수를 한글로 표현된 문자열로 변환하는 함수를 작성해주세요. 예를 들어, 123이 주어지면 "일백이십삼"을 반환해야 합니다. 이 문제에서는 1부터 9999까지의 정수만을 다룹니다.


제한 사항


입출력 예

입력 출력
123 일백이십삼
45 사십오
1001 일천일
2020 이천이십
100 일백

입출력 예 설명

Note: 문제가 어렵게 출제되었다면 앞에 일을 생략하하는 문제가 출제되었을 것입니다.

</aside>

😺 풀이 1. enumerate 반복문

def solution(data):
    units = ["", "십", "백", "천"]
    nums = ["", "일", "이", "삼", "사", "오", "육", "칠", "팔", "구"] **#1 단위와 숫자**
    result = ""
    str_data = str(data)[::-1] **#2 데이터 역순**

    for i, digit in enumerate(str_data): **#3 숫자 변환**
        num = int(digit)
        if num > 0: **#4 자릿수에 따른 한글표현**
            result = nums[num] + units[i] + result

    return result **#5 결과 반환**

단계별 풀이 전략

  1. 단위와 숫자 리스트 선언

    숫자 단위를 나타내는 untis와 숫자에 대응되는 한글표현을 나타내는 nums리스트를 만듭니다.

  2. 데이터 역순

    주어진 데이터를 역순으로 정렬합니다.

  3. 숫자 변환

    enumerate함수를 사용하여 i는 자릿수의 위치, digit은 해당 위치의 숫자를 나타내 줍니다.

  4. 자릿수에 따른 한글표현

    nums[num]을 통해 현재 자릿수에 해당하는 한글 숫자를 가져오고 units[i]를 통해 자릿수에 해당하는 한글 단위를 가져옵니다.

  5. 결과 반환

    한글 표현으로 변환된 결과값을 반환합니다.

알아둬야 할 개념

enumerate

풀이 2. 조건문

def solution(data):
    my_dict = {0: '', 1: '일', 2: '이', 3:'삼', 4:'사', 5:'오',
               6:'육', 7:'칠', 8:'팔', 9:'구', 10:'십', 100:'백', 1000:'천'} **#1 한글표현**
    result = '' **#2 결과값 초기화**
    current_num = data
    if current_num // 1000 != 0: **#3 단위값에 따른 조건문**
        result += my_dict[data // 1000] + '천'
        current_num = data % 1000
    if current_num // 100 != 0:
        result += my_dict[current_num // 100] + '백'
        current_num = data % 100
    if current_num // 10 != 0:
        result += my_dict[current_num // 10] + '십'
        current_num = data % 10
    result += my_dict[current_num]
    return result **#4 결과 반환**

단계별 풀이 전략

  1. 한글 표현 생성

    주어진 숫자에 대응하는 한글 표현을 담은 딕셔너리를 생성합니다.

  2. 결과값 초기화

    결과를 저장할 변수를 초기화합니다.

  3. 단위값에 따른 조건문

    주어진 값을 단위값으로 나누어 그에 맞는 단위를 표기해줍니다. 주어진 값을 나눈 후 나머지는 아래 조건문으로 이동하여 똑같은 작업을 반복합니다. 마지막 조건문을 거친다면 주어진 값은 10미만이 됩니다.