개요
프로그래밍에서 한 자리 숫자를 해당하는 영어 단어로 바꿔야 하는 경우가 종종 있습니다. 예를 들어 숫자 5가 입력되면 "Five"를 출력하고, 6이 입력되면 "Six"를 출력해야 합니다. 만약 입력값이 0에서 9 사이의 범위를 벗어난다면 적절한 안내 메시지를 반환하도록 처리해야 합니다.
이번 글에서는 C 언어를 사용해 이 문제를 해결하는 방법을 단계별로 살펴보겠습니다.
문제 해결 접근 방법
가장 기본적인 방법은 조건문(if-else)을 활용하는 것입니다. 알고리즘은 다음과 같습니다.
solve()함수를 정의하고 숫자d를 매개변수로 전달합니다.- 입력값이 0보다 작거나 9보다 크면 "Beyond range of 0 - 9"를 출력합니다.
- d가 0이면 "Zero", 1이면 "One", 2이면 "Two"와 같이 9("Nine")까지 차례대로 비교하여 해당 단어를 출력합니다.
C 언어 구현 예제
다음 예제를 통해 실제 구현 방법을 확인해 보겠습니다.
#include <stdio.h>
void solve(int d){
if(d < 0 || d > 9){
printf("Beyond range of 0 - 9");
}else if(d == 0){
printf("Zero");
}else if(d == 1){
printf("One");
}else if(d == 2){
printf("Two");
}else if(d == 3){
printf("Three");
}else if(d == 4){
printf("Four");
}else if(d == 5){
printf("Five");
}else if(d == 6){
printf("Six");
}else if(d == 7){
printf("Seven");
}else if(d == 8){
printf("Eight");
}else if(d == 9){
printf("Nine");
}
}
int main(){
int d = 6;
solve(d);
return 0;
}
참고: 범위 검사 조건은 반드시 OR 연산자(||)를 사용해야 합니다. 하나의 값이 동시에 0보다 작고(d < 0) 9보다 클 수는(d > 9) 없기 때문에 AND 연산자(&&)를 사용하면 조건이 항상 거짓이 되어 범위 검사가 제대로 작동하지 않습니다.
실행 결과
입력:
6
출력:
Six
더 효율적인 방법: 배열 활용하기
if-else 문을 여러 번 나열하는 대신 문자열 배열을 이용하면 코드를 훨씬 간결하게 만들 수 있습니다.
#include <stdio.h>
void solve(int d){
char *words[] = {"Zero", "One", "Two", "Three", "Four",
"Five", "Six", "Seven", "Eight", "Nine"};
if(d < 0 || d > 9){
printf("Beyond range of 0 - 9");
}else{
printf("%s", words[d]);
}
}
int main(){
int d = 6;
solve(d);
return 0;
}
배열의 인덱스가 숫자 값과 일치하므로 별도의 조건 비교 없이 한 줄로 결과를 얻을 수 있습니다. 덕분에 코드 길이가 크게 줄어들고 가독성과 유지보수성도 함께 향상됩니다.
마무리
이처럼 조건문 또는 배열을 활용하면 한 자리 숫자를 단어로 손쉽게 변환할 수 있습니다. C 언어 초보자라면 먼저 if-else 구조로 기본 로직을 익힌 뒤, 배열 방식으로 코드를 리팩토링해 보는 학습 순서를 추천합니다.