agencies

[CodeUp] 2024 : 숫자를 한글로 변환 본문

Ⅰ. 프로그래밍

[CodeUp] 2024 : 숫자를 한글로 변환

agencies 2024. 3. 30. 15:59

 

문제 접근 방식

- 각 숫자가 들어가면 이를 한글로 변환할 수 있는 딕셔너리 선언

- 숫자가 입력을 하는데 '만' 출력을 방어하기 위해 입력된 수 중 4자리만 추출 (reverse_num)

- 0이 입력되면 영 출력 / 이것을 제외하고는 무시

- 글자들이 누적해서 저장

- 일억만 대신 일억이 표기될 수 있도록 입력된 값을 1억으로 나눴을때 나머지가 4자리 추출한 값보다 크다면 만 출력
(그렇지 않으면 : 4자리수인 경우) 만 출력하지 않음

 

a={1:'일', 2:'이', 3:'삼', 4:'사', 5:'오', 6:'육', 7:'칠', 8:'팔', 9:'구', 0:''}
num = input()


reverse_num = ''.join(reversed(num))
reverse_num = reverse_num[0:4]
reverse_num = ''.join(reversed(reverse_num))



d = len(num)
r = ''
for i in num:

    if len(num) == 1 and i == '0':
        r = '영'


    if d == 10:
        tmp = a[int(i)]+'십'
        r += tmp
    elif d == 9:
        tmp = a[int(i)]+'억'
        r += tmp
    elif d == 8 and i != '0':
        tmp = a[int(i)]+'천'
        r += tmp        
    elif d == 7 and i != '0':
        tmp = a[int(i)]+'백'
        r += tmp   
    elif d == 6 and i != '0':
        tmp = a[int(i)]+'십'
        r += tmp
    elif d == 5 and int(num)%100000000>int(reverse_num):
        tmp = a[int(i)]+'만'
        r += tmp
    elif d == 4 and i != '0':
        tmp = a[int(i)]+'천'
        r += tmp
    elif d == 3 and i != '0':
        tmp = a[int(i)]+'백'
        r += tmp
    elif d == 2 and i != '0':
        tmp = a[int(i)]+'십'
        r += tmp   
    elif d == 1:
        tmp = a[int(i)]
        r += tmp   
    d -= 1
    
print(r)