<aside>
💬 lv0
, 문자열 처리
, 숫자 변환
주어진 정수를 한글로 표현된 문자열로 변환하는 함수를 작성해주세요. 예를 들어, 123이 주어지면 "일백이십삼"을 반환해야 합니다. 이 문제에서는 1부터 9999까지의 정수만을 다룹니다.
입력 | 출력 |
---|---|
123 | 일백이십삼 |
45 | 사십오 |
1001 | 일천일 |
2020 | 이천이십 |
100 | 일백 |
Note: 문제가 어렵게 출제되었다면 앞에 일을 생략하하는 문제가 출제되었을 것입니다.
</aside>
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 결과 반환**
단위와 숫자 리스트 선언
숫자 단위를 나타내는 untis
와 숫자에 대응되는 한글표현을 나타내는 nums
리스트를 만듭니다.
데이터 역순
주어진 데이터를 역순으로 정렬합니다.
숫자 변환
enumerate
함수를 사용하여 i
는 자릿수의 위치, digit
은 해당 위치의 숫자를 나타내 줍니다.
자릿수에 따른 한글표현
nums[num]
을 통해 현재 자릿수에 해당하는 한글 숫자를 가져오고 units[i]
를 통해 자릿수에 해당하는 한글 단위를 가져옵니다.
결과 반환
한글 표현으로 변환된 결과값을 반환합니다.
enumerate
기본 형태: enumerate()
개념: 시퀀스(리스트, 튜플, 문자열 등)의 각 요소에 대해 인덱스와 값을 함께 반환하는 열거 객체를 생성합니다.
# enumerate 함수를 사용한 예제
fruits = ["apple", "banana", "cherry", "date"]
# enumerate 함수를 사용하여 인덱스와 값을 함께 출력
for index, fruit in enumerate(fruits):
print(index, fruit) # 출력: 0 apple 1 banana 2 cherry 3 date
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 결과 반환**
한글 표현 생성
주어진 숫자에 대응하는 한글 표현을 담은 딕셔너리
를 생성합니다.
결과값 초기화
결과를 저장할 변수
를 초기화합니다.
단위값에 따른 조건문
주어진 값을 단위값으로 나누어 그에 맞는 단위를 표기해줍니다. 주어진 값을 나눈 후 나머지는 아래 조건문으로 이동하여 똑같은 작업을 반복합니다. 마지막 조건문을 거친다면 주어진 값은 10미만이 됩니다.