[ Source Code ]#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//////////////////////////////////////////////////////////////////////////
// Define
#define MAX_ROW 14
#define MAX_COLUMN 23
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Function declaration
void printNumber ( char *, int );
void printRowColumn ( int, int );
int data[10][5] = { 4, 3, 5, 3, 4,
5, 2, 5, 2, 5,
4, 2, 4, 1, 4,
4, 2, 4, 2, 4,
5, 3, 4, 2, 5,
4, 1, 4, 2, 4,
4, 1, 4, 3, 4,
4, 2, 5, 2, 5,
4, 3, 4, 3, 4,
4, 3, 4, 2, 4};
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Main
int main ( void )
{
int size;
char input[9];
while ( 1 ) {
scanf ( “%d“, &size );
getchar ();
if ( size == 0 ) {
break;
}
scanf ( “%s“, input );
printNumber ( input, size );
printf ( “\n“ );
}
return 0;
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Function printNumber
// Input : Input string, size integer
// Memo : print Number to screen
void printNumber ( char *input, int size )
{
int count, count1, count2, len, multi = 1, temp;
char ctemp;
len = strlen ( input );
// loop to end of input
for ( count = 0 ; count < 5 ; count++ ) {
if ( count == 1 || count == 3 ) {
multi = size;
}
for ( count1 = count2 = 0 ; count1 < len * multi ; count1++ ) {
// print by input number
if ( count1 != 0 ) count2 = count1 % len;
ctemp = input[count2];
temp = atoi ( &ctemp );
printRowColumn ( size, data[temp][count] );
// when one row printed, print ‘\n’
if ( len != 1 && count1 != 0 && count2 == len – 1 ) {
printf ( “\n“ );
}
else {
if ( len != 1 ) {
printf ( ” “ );
}
else {
printf ( “\n“ );
}
}
}
multi = 1;
}
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Function printRowColumn
// Input : print size, print type ( type 1 – ‘| ‘, type 2 – ‘ |’, type 3 – ‘| |’, type 4 – ‘—‘, type 5 ‘ ‘
// Memo : print Left ‘|’, ‘ ‘ what we want
void printRowColumn ( int size, int type )
{
int count, count1;
switch ( type ) {
case 1 :
printf ( “|” );
for ( count = 0 ; count < size + 1 ; count++ ) {
printf ( ” “ );
}
break;
case 2 :
for ( count = 0 ; count < size + 1 ; count++ ) {
printf ( ” “ );
}
printf ( “|” );
break;
case 3 :
printf ( “|” );
for ( count = 0 ; count < size ; count++ ) {
printf ( ” “ );
}
printf ( “|” );
break;
case 4 :
printf ( ” “ );
for ( count = 0 ; count < size ; count++ ) {
printf ( “-“ );
}
printf ( ” “ );
break;
case 5 :
for ( count = 0 ; count < size + 2 ; count++ ) {
printf ( ” “ );
}
break;
}
}
//////////////////////////////////////////////////////////////////////////
|
안녕하십니까.
조언을 구하고자 합니다.
제가 알고리즘트레이닝북(한빛)책을 보고있습니다.
지뢰찾기까지는 스스로 구했는데 LCD 여기서 막힙니다.
소스는 여기저기서 많이보고 이해도 했는데
막상 ‘아 이젠 내가 짜보자’해서 짜보자그려면 눈앞이 컴컴해지고
main()
{
여기서 손이 안움직입니다.
‘프로그래밍’은 어떻게 해야하는건지
(한 1주에 한번씩 이문제를 잡았는데 이제 3달째가 지나 갑니다 ㅠ.ㅠ;;; ps. vi 코딩하다가 깜짝놀랐습니다 >> hjkl )
네, 저도 정말 PE가 많이 나더라구요. 좀 짜증났던 문제였습니다.
열심히 문제 푸시는 분들이 계시는군요…
그리고 부끄러운 저의 블로그에 오셔서 부끄러운 소스들을
보시는 분도 ^^;;
알고리즘 열심히 하세요~~~ 다시 그때로 가고프다는 ^^