https://prepnsell.com/blog/2023/09/20/hlhagexc3 문제 <- 클릭
https://www.ibct-global.com/h7t88s5og 쉽고 재미 있는 문제다. 다른 문제와 다르게 한번에 성공. 책의 풀이보다 내가 한 방식이 왠지 마음에 든다.
#include
#include
using namespace std;
void printLine(int fontSize) {
putchar(' ');
for (int i = 0; i < fontSize; ++i)
putchar('-');
putchar(' ');
}
void printEmpty(int fontSize) {
for (int i = 0; i < fontSize + 2; ++i)
putchar(' ');
}
void printIO(int fontSize) {
putchar('|');
for (int i = 0; i < fontSize; ++i)
putchar(' ');
putchar(' ');
}
void printOI(int fontSize) {
putchar(' ');
for (int i = 0; i < fontSize; ++i)
putchar(' ');
putchar('|');
}
void printII(int fontSize) {
putchar('|');
for (int i = 0; i < fontSize; ++i)
putchar(' ');
putchar('|');
}
void printTop(char* arr, int arr_length, int fontSize) {
for (int i = 0; i < arr_length; ++i) {
switch (arr[i]) {
case '1':
case '4':
printEmpty(fontSize);
break;
default:
printLine(fontSize);
break;
}
if (i < arr_length - 1)
putchar(' ');
}
putchar('n');
}
void printTC(char* arr, int arr_length, int fontSize) {
for (int j = 0; j < fontSize; ++j) {
for (int i = 0; i < arr_length; ++i) {
switch (arr[i]) {
case '5':
case '6':
printIO(fontSize);
break;
case '1':
case '2':
case '3':
case '7':
printOI(fontSize);
break;
case '0':
case '4':
case '8':
case '9':
printII(fontSize);
break;
}
if (i < arr_length - 1)
putchar(' ');
}
putchar('n');
}
}
void printCenter(char* arr, int arr_length, int fontSize) {
for (int i = 0; i < arr_length; ++i) {
switch (arr[i]) {
case '0':
case '1':
case '7':
printEmpty(fontSize);
break;
default:
printLine(fontSize);
break;
}
if (i < arr_length - 1)
putchar(' ');
}
putchar('n');
}
void printCB(char* arr, int arr_length, int fontSize) {
for (int j = 0; j < fontSize; ++j) {
for (int i = 0; i < arr_length; ++i) {
switch (arr[i]) {
case '2':
printIO(fontSize);
break;
case '1':
case '3':
case '4':
case '5':
case '7':
case '9':
printOI(fontSize);
break;
case '0':
case '6':
case '8':
printII(fontSize);
break;
}
if (i < arr_length - 1)
putchar(' ');
}
putchar('n');
}
}
void printBottom(char* arr, int arr_length, int fontSize) {
for (int i = 0; i < arr_length; ++i) {
switch (arr[i]) {
case '1':
case '4':
case '7':
printEmpty(fontSize);
break;
default:
printLine(fontSize);
break;
}
if (i < arr_length - 1)
putchar(' ');
}
putchar('n');
}
int main() {
int fontSize;
int numbers;
int numberOfNumbers;
char numbersArr[9];
while (cin >> fontSize >> numbers) {
if (fontSize == 0 && numbers == 0)
break;
sprintf(numbersArr, "%d", numbers); //문자열로 바꾸기
numberOfNumbers = strlen(numbersArr);
printTop(numbersArr, numberOfNumbers, fontSize); //윗줄 표시
printTC(numbersArr, numberOfNumbers, fontSize); //사이
printCenter(numbersArr, numberOfNumbers, fontSize); //중간
printCB(numbersArr, numberOfNumbers, fontSize); //사이
printBottom(numbersArr, numberOfNumbers, fontSize); //아랫줄
putchar('n');
}
return 0;
}
이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.