문자열 형태로 주어진 숫자 n이 있을 때, 이 숫자를 해시(#) 기호를 이용해 큰 크기로 출력하는 것이 이번 문제의 목표입니다.
예를 들어 "1234"라는 숫자가 주어졌다면, 다음과 같은 형태로 표현되어야 합니다.

마찬가지로 우리가 작성할 솔루션도 위와 같은 방식으로 결과를 출력하도록 구현합니다.
예시
입력: n[] = {"2234"}
출력:
입력: n[] = {"987"}
출력:
문제 해결 접근 방법
- 최대 자릿수의 숫자를 문자열 형태로 입력받습니다.
- 각 숫자(0~9)마다 원하는 큰 패턴을 2차원 배열로 하나씩 정의합니다.
- 문자열을 순회하면서 각 숫자에 해당하는 패턴을 한 줄씩 출력합니다.
알고리즘
Start
Step 1 -> Define Height as 7
Step 2 -> Define W 8
Step 3 -> In function int large(char num[])
Declare variables i, j, k
Set char zero[H][W]={" ##### ", // H=0
" # # ",
" # # ",
" # # ",
" # # ",
" # # ",
" ##### "},
Set one[H][W]={" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
" # "},
Set two[H][W]={ " ##### ",
" # ",
" # ",
" ##### ",
" # ",
" # ",
" ##### "},
Set three[H][W]={" ##### ",
" # ",
" # ",
" ##### ",
" # ",
" # ",
" ##### "},
Set four[H][W]={" # ",
" # # ",
" # # ",
" ##### ",
" # ",
" # ",
" # "},
Set five[H][W]={" ##### ",
" # ",
" # ",
" ##### ",
" # ",
" # ",
" ##### "},
Set six[H][W]={ " ##### ",
" # ",
" # ",
" ##### ",
" # # ",
" # # ",
" ##### "},
Set seven[H][W]={" ##### ",
" # ",
" # ",
" # ",
" # ",
" # ",
" # "},
Set eight[H][W]={" ##### ",
" # # ",
" # # ",
" ##### ",
" # # ",
" # # ",
" ##### "},
Set nine[H][W]={" ##### ",
" # # ",
" # # ",
" ##### ",
" # ",
" # ",
" # "}
If strlen(num) > 10
Print ”You must enter a number upto 10 digits”
Else
Print new line
Set k=1
Set j=0
While k <= 7
Loop For i=0 and i Declare int main()
Declare and initialize input char n[] = {"2168"}
Call function large(n)
Stop 구현 예제
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define H 7
#define W 8
int large(char num[]) {
int i, j, k;
// declaring char 2D arrays and initializing
// with hash-printed digits
char zero[H][W]={" ##### ", // H=0
" # # ", // H=1
" # # ", // H=2
" # # ", // H=3
" # # ", // H=4
" # # ", // H=5
" ##### "},// H=6
one[H][W]={" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
" # "},
two[H][W]={ " ##### ",
" # ",
" # ",
" ##### ",
" # ",
" # ",
" ##### "},
three[H][W]={" ##### ",
" # ",
" # ",
" ##### ",
" # ",
" # ",
" ##### "},
four[H][W]={" # ",
" # # ",
" # # ",
" ##### ",
" # ",
" # ",
" # "},
five[H][W]={" ##### ",
" # ",
" # ",
" ##### ",
" # ",
" # ",
" ##### "},
six[H][W]={ " ##### ",
" # ",
" # ",
" ##### ",
" # # ",
" # # ",
" ##### "},
seven[H][W]={" ##### ",
" # ",
" # ",
" # ",
" # ",
" # ",
" # "},
eight[H][W]={" ##### ",
" # # ",
" # # ",
" ##### ",
" # # ",
" # # ",
" ##### "},
nine[H][W]={" ##### ",
" # # ",
" # # ",
" ##### ",
" # ",
" # ",
" # ";
if (strlen(num) > 10)
printf("\nYou must enter a number upto 10 digits.\nTry again!\n");
else {
printf("\n");
k=1;
j=0; //controls H of each digit
while (k <= 7) //controls height {
for (i=0; i<strlen(num); i++) //reads each digit {
if (num[i] == '0')
printf("%s", zero[j]);
else if (num[i] == '1')
printf("%s", one[j]);
else if (num[i] == '2')
printf("%s", two[j]);
else if (num[i] == '3')
printf("%s", three[j]);
else if (num[i] == '4')
printf("%s", four[j]);
else if (num[i] == '5')
printf("%s", five[j]);
else if (num[i] == '6')
printf("%s", six[j]);
else if (num[i] == '7')
printf("%s", seven[j]);
else if (num[i] == '8')
printf("%s", eight[j]);
else if (num[i] == '9')
printf("%s", nine[j]);
}
printf("\n");
k++;
j++;
}
}
return 1;
}
//main fucntion
int main() {
char n[] = {"2168"};
large(n);
return 0;
}실행 결과

코드 설명
위 코드의 핵심 로직은 다음과 같습니다.
- 패턴 정의: 0부터 9까지 각 숫자를 높이 7칸, 너비 8칸 크기의 2차원 문자 배열로 정의합니다. 각 행은 해당 숫자의 가로 한 줄을 나타냅니다.
- 높이 반복: while 루프(k 변수)는 숫자의 세로 높이인 7줄을 제어하고, for 루프(i 변수)는 입력받은 문자열의 각 자릿수를 차례대로 읽습니다.
- 조건 분기: 현재 자릿수가 어떤 숫자인지 비교하여, 그 숫자 패턴 배열의 j번째 행을 공백 없이 이어서 출력함으로써 여러 숫자가 나란히 배치된 형태를 완성합니다.
- 예외 처리: 입력이 10자리를 초과하면 오류 메시지를 출력하고 종료합니다.
이 프로그램은 전광판이나 콘솔 기반 시각화 등에서 활용할 수 있는 기본적인 ASCII 아트 출력 기법을 보여주는 좋은 예제입니다.