본문 바로가기
프로그래밍/CodeUp

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

by 조원일 2020. 3. 18.
728x90

1. 문제

https://codeup.kr/problem.php?id=2024

 

숫자를 한글로 변환

양의 정수 n이 입력된다. ( 0 <= n <= 2,100,000,000)

codeup.kr

[출처 : 코드업(https://codeup.kr/)]

이번 문제는 입력된 숫자를 한글로 읽듯이 변환해 주는 문제입니다.

예) 123456 -> 일십이만삼천사백오십육

 

 

2. 해답

#include <stdio.h>

int main()
{
	char number[9][4] = { "일", "이", "삼" , "사" , "오" , "육" , "칠" , "팔" , "구" };
	char ciphers[10][4] = { "", "십", "백", "천" , "만" , "십" , "백" , "천" , "억" , "십" };

	char Arr[11];
	int count = 0;
	int tmp = 0;

	scanf("%s", Arr);


	for (int i = 0; i < strlen(Arr); i++) {
		if (Arr[i] == '0') {
			if (strlen(Arr) - i - 1 == 8) {
				if (count != 0) printf("억");
				count = 0;
			}
			else if (strlen(Arr) - i - 1 == 4) {
				if (count != 0) printf("만");
				count = 0;
			}
			else if (strlen(Arr) == 1) printf("영");

			continue;
		}

		tmp = (int)Arr[i] - 48;
		count = (count * 10) + tmp;
		if (i == strlen(Arr) - 1) printf("%s", number[tmp - 1]);
		else {
			printf("%s%s", number[tmp - 1], ciphers[strlen(Arr) - i - 1]);
			if (strlen(Arr) - i - 1 == 8) count = 0;
			else if (strlen(Arr) - i - 1 == 4) count = 0;
		}
	}
	printf("\n");
	return 0;
}