Problem Link : http://acm.uva.es/p/v7/706.html
■ Problem
- 주어진 크기로 주어진 숫자를 화면에 표기하라 쿠쿠

■ Solution
- 가로는 '-'로 세로는 '|'로 주어진 크기만큼 열심히 그려주면됨.
- 숫자를 상하 5등분.. 가로-세로-가로-세로-가로 이렇게 나누고 각 숫자 패턴을 배열로 저장
- 대신 생각할 점은 입력된 숫자 하나를 다 출력하고 다음 숫자를 출력하는 것이 아니라
   입력된 숫자를 가로로 출력하는 것이라 아주 약간 생각이 필요함

■ Critical Input
- 역시 P.E가 많이 나옴... 이유는 숫자 하나 출력하고 다음 숫자 사이에 한 열이 비어야 하는데
   마지막 숫자 출력후에도 한열을 출력하게 해서 P.E가 많이 남.
- 왜 그러지하고 테스트차 안보이는 스페이스를 어떻게 나오나 보려고 '.'으로 대치해서 수정하고
   마지막 숫자뒤에 한열 출력되던 것 수정 하고 Submit 어랏 이젠 Wrong Answer 헐... 대략 난감...
   소스 열심히 Ctrl + z.... 그러던중.. 이상하다... 이상하다... ㅡ.ㅡ;;;
   소스 Submit할때 디버그하던 소스 그대로 넣어서.. 스페이스 부분이 다 '.'으로 넣어져서.. 웩..


[ 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;
        }

}
//////////////////////////////////////////////////////////////////////////
2007/01/24 15:59 2007/01/24 15:59
REPLY AND TRACKBACK RSS http://kuku.pe.kr/rss/response/3
REPLY AND TRACKBACK ATOM http://kuku.pe.kr/atom/response/3
TRACKBACK ADDRESS
http://kuku.pe.kr/trackback/3
REPLY RSS http://kuku.pe.kr/rss/comment/3
REPLY ATOM http://kuku.pe.kr/atom/comment/3
넷평 
wrote at 2009/06/30 17:18
안녕하십니까.

조언을 구하고자 합니다.

제가 알고리즘트레이닝북(한빛)책을 보고있습니다.
지뢰찾기까지는 스스로 구했는데 LCD 여기서 막힙니다.
소스는 여기저기서 많이보고 이해도 했는데
막상 '아 이젠 내가 짜보자'해서 짜보자그려면 눈앞이 컴컴해지고
main()
{
여기서 손이 안움직입니다.

'프로그래밍'은 어떻게 해야하는건지
(한 1주에 한번씩 이문제를 잡았는데 이제 3달째가 지나 갑니다 ㅠ.ㅠ;;; ps. vi 코딩하다가 깜짝놀랐습니다 >> hjkl )
wrote at 2009/10/05 12:47
네, 저도 정말 PE가 많이 나더라구요. 좀 짜증났던 문제였습니다.
쿠쿠 
wrote at 2009/10/06 01:18
열심히 문제 푸시는 분들이 계시는군요...

그리고 부끄러운 저의 블로그에 오셔서 부끄러운 소스들을

보시는 분도 ^^;;

알고리즘 열심히 하세요~~~ 다시 그때로 가고프다는 ^^
이름 :
비밀번호 :
홈사이트 :
비밀글 :
*1  ... *324  *325  *326  *327  *328  *329  *330  *331  *332 
count total 176243, today 70, yesterday 94
관리인 : 쿠쿠
rss
I am
알립니다
전체
하루 하루
하루 하루日本
Programming
여행
영화
WiTh LoMo
뿜뿌
요리ㅋㅋ
달력
«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31