블로그는 귀차니즘

First Sensation
  • 공지
  • 지역로그
  • 태그
  • 방명록

LCD Display

Algorithm 2008/02/17 08:30 귀차니스트
  1. 문제링크 : http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=9&page=show_problem&problem=647
  2.  의   견   : 배열을 이용 참조하여 문자열을 출력하는 식으로 구현해봤습니다. 문제는 Commit 시 공백의 문제점 때문에 Wrong Answer가 뜨더군요. 하지만, 외관상 문자열 출력형식은 같기에 굳이 Accept까지 진행하지는 않았습니다. 가로와 세로의 출력을 분리하여 구현한다면 쉬운 문제일 것입니다.
  3. 소스
    706.cpp (Language : cpp)
    1. #include <iostream>
    2. #include <string>
    3.  
    4. std::string NumberList;
    5.  
    6. unsigned char CharacterTable[ 10 ][ 5 ][ 3 ] = { { { ' ', '-', ' ' }, { '|', ' ', '|' }, { ' ', ' ', ' ' }, { '|', ' ', '|' }, { ' ', '-', ' ' } }, // 0
    7. { { ' ', ' ', ' ' }, { ' ', ' ', '|' }, { ' ', ' ', ' ' }, { ' ', ' ', '|' }, { ' ', ' ', ' ' } }, // 1
    8. { { ' ', '-', ' ' }, { ' ', ' ', '|' }, { ' ', '-', ' ' }, { '|', ' ', ' ' }, { ' ', '-', ' ' } }, // 2
    9. { { ' ', '-', ' ' }, { ' ', ' ', '|' }, { ' ', '-', ' ' }, { ' ', ' ', '|' }, { ' ', '-', ' ' } }, // 3
    10. { { ' ', ' ', ' ' }, { '|', ' ', '|' }, { ' ', '-', ' ' }, { ' ', ' ', '|' }, { ' ', ' ', ' ' } }, // 4
    11. { { ' ', '-', ' ' }, { '|', ' ', ' ' }, { ' ', '-', ' ' }, { ' ', ' ', '|' }, { ' ', '-', ' ' } }, // 5
    12. { { ' ', '-', ' ' }, { '|', ' ', ' ' }, { ' ', '-', ' ' }, { '|', ' ', '|' }, { ' ', '-', ' ' } }, // 6
    13. { { ' ', '-', ' ' }, { ' ', ' ', '|' }, { ' ', ' ', ' ' }, { ' ', ' ', '|' }, { ' ', ' ', ' ' } }, // 7
    14. { { ' ', '-', ' ' }, { '|', ' ', '|' }, { ' ', '-', ' ' }, { '|', ' ', '|' }, { ' ', '-', ' ' } }, // 8
    15. { { ' ', '-', ' ' }, { '|', ' ', '|' }, { ' ', '-', ' ' }, { ' ', ' ', '|' }, { ' ', '-', ' ' } } }; // 9
    16.  
    17. void HorizonalPrint( int Width, int Seq )
    18. {
    19.     bool IsFirst = true;
    20.     char PrintChar;
    21.     size_t VectorCount = NumberList.length();
    22.  
    23.     for( unsigned int i = 0; i < VectorCount; ++i ) {
    24.  
    25.         PrintChar = CharacterTable[ NumberList[ i ] - '0' ][ Seq ][ 1 ];
    26.  
    27.         if( i != 0 )
    28.             std::cout << " ";
    29.  
    30.         std::cout << " ";
    31.         for( int j = 0; j < Width; ++j ) {
    32.             std::cout << PrintChar;
    33.         }
    34.         std::cout << " ";
    35.     }
    36. }
    37.  
    38. void VerticalPrint( int Width, int Seq )
    39. {
    40.     bool IsFirst = true;
    41.     size_t VectorCount = NumberList.length();
    42.  
    43.     std::string PrintStr = "";
    44.  
    45.     for( unsigned int i = 0; i < VectorCount; ++i ) {
    46.  
    47.         if( i != 0 )
    48.             PrintStr += " ";
    49.  
    50.         PrintStr += CharacterTable[ NumberList[ i ] - '0' ][ Seq ][ 0 ];
    51.         for( int j = 0; j < Width; ++j ) {
    52.             PrintStr += " ";
    53.         }
    54.         PrintStr += CharacterTable[ NumberList[ i ] - '0' ][ Seq ][ 2 ];
    55.     }
    56.  
    57.     for( int Cnt = 0; Cnt < Width; ++Cnt )
    58.         std::cout << PrintStr.c_str() << std::endl;
    59. }
    60.  
    61. void PrintNumber( int Width )
    62. {
    63.     for( int i = 0; i < 5; ++i ) {
    64.  
    65.         if( i & 1 )
    66.             VerticalPrint( Width, i );
    67.         else {
    68.             HorizonalPrint( Width, i );
    69.             std::cout << std::endl;
    70.         }
    71.     }
    72. }
    73.  
    74. int main( int argc, char **argv )
    75. {
    76.     int CharacterWidth;
    77.  
    78.     while( true ) {
    79.  
    80.         std::cin >> CharacterWidth >> NumberList;
    81.  
    82.         if( CharacterWidth == 0 ) {
    83.  
    84.             if( NumberList == "0" )
    85.                 break;
    86.             else
    87.                 continue;
    88.         }
    89.  
    90.         PrintNumber( CharacterWidth );
    91.     }
    92.  
    93.     return 0;
    94. }
    95.  
    96.  

크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

"Algorithm" 분류의 다른 글

Algorithm Traning Book - 다섯번째 문제 (0)2008/06/15
Algorithm Traning Book - 세 번째 문제 (0)2008/06/10
Algorithm Traning Book - 두 번째 문제 (0)2008/06/09
3n+1 Problem (0)2008/02/17
The Blocks Problem (0)2008/02/17
2008/02/17 08:30 2008/02/17 08:30
TAG ACM, ACM-ICPC, Array, C++, ICPC
트랙백 2개, 댓글 3개가 달렸습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/9

  1. Subject: 문제 4 : LCD 디스플레이(LCD Display)

    Tracked from 최익필의 이름없는 블로그 2009/03/02 13:43  삭제

    PC/UVa ID : 110104/706, 인기도 : A, 성공률 : 보통, 레벨 : 1 { 한 친구가 방금 새 컴퓨터를 샀다. 그 친구가 지금까지 샀던 가장 강력한 컴퓨터는 공학용 전자 계산기였다. 그런데 그 친구는 새 컴퓨터의 모니터보다 공학용 계산기에 있는 LCD 디스플레이가 더 좋다며 크게 실망하고 말았다. 그 친구를 만족시킬 수 있도록 숫자를 LCD 디스플레이 방식으로 출력하는 프로그램을 만들어 보자. 입력 입력 파일은 여러 줄로 구성되며..

  2. Subject: ACM 706 (Uva ID) : LCD Display

    Tracked from 알고리즘 트레이닝 : Ohyecloudy 2009/07/12 18:38  삭제

    문제 링크 : http://uva.onlinejudge.org/external/7/706.html 응시 유저 수 : 5770 해결한 유저 비율 : 62.86% 문자와 문자 사이에 빈칸을 출력해야 하고 출력을 다 하고 빈 라인을 출력해야 한다. for_each로 문자의 row를 출력하려고 했는데, 마지막 문자 뒤에는 공백을 출력하면 안 돼서 그냥 반복자(iterator)를 사용해서 출력했다. 어렵기보단 귀찮은 문제.. 소스 코드 보기... //////..

댓글을 달아 주세요

  1. 최익필 2009/03/02 14:04  댓글주소  수정/삭제  댓글쓰기

    잘 배워 갑니다.

  2. 최익필 2009/03/02 14:10  댓글주소  수정/삭제  댓글쓰기

    궁금한 것을 여쭙습니다. int a = '1' - '0'; 처럼 문자열 빼기가 어떻게 정수가 될 수 있는지 궁금합니다.

  3. 최익필 2009/03/02 16:30  댓글주소  수정/삭제  댓글쓰기

    왜 나오는지 알았습니다 : ) 재미있었습니다. ㅋ

◀ 이전페이지 1 ... 112 113 114 115 116 117 118 다음페이지 ▶

블로그 이미지
First Sensation 귀차니스트
rss
  • 관리자
  • 글쓰기

카테고리

  • 전체 (118)
    • Computer (3)
    • Language (14)
    • Reverse Engineering (1)
    • Algorithm (9)
    • TopCoder (3)
    • Library (2)
    • Programming (21)
    • Programming Tip (9)
    • PSP-Programming (10)
    • Program (5)
    • Small Talk (33)
    • Document (4)
    • OS Develope (4)

최근에 올라온 글

  • Script Interpreter - b....
  • VirtualHttpServer - 가.... (2)
  • 음.. 여러가지 일이 있.... (2)
  • 어후.. 드디어 인터럽트....
  • Kernel Image에 어이없....

최근에 달린 댓글

  • 헠 ㅋ 다음에도 들러주세용 ㅋㅋ. 귀차니스트 03/09
  • ㅎㅎ RSS로 첨 온 글이네.ㅋ. 당구리 02/22
  • 음.. 한글화 파일 0.5 버젼은.... 귀차니스트 02/22
  • 관리자만 볼 수 있는 댓글입.... 비밀방문자 01/30
  • 어떤 의미이신지 잘 모르겠네.... 귀차니스트 01/23

달력

«   2010/03   »
일 월 화 수 목 금 토
  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      

링크

  • kkamagui 프로그래밍 세상.
  • runner님의 이글루.
  • 당구리의 마굿간.
  • 동우fly.
  • 류광의 번역 이야기.
  • 서광열의 프로그래밍 언....
  • 준호씨의 블로그.
  • 최익필의 이름없는 블로그.
  • 위키는 귀차니즘.

최근에 받은 트랙백

  • 한게임 테트리스 인공지.... 고니's Life 2009
  • ACM 706 (Uva ID) : LCD.... 알고리즘 트레이닝 : Oh... 2009
  • 문제 4 : LCD 디스플레.... 최익필의 이름없는 블로그 2009
  • 궁극의 예외처리. 이름없는 블로그 2008
  • Maximum sum. 티스토리 지점 2008

글 보관함

  • 2010/03 (1)
  • 2010/02 (1)
  • 2010/01 (1)
  • 2009/12 (3)
  • 2009/08 (1)

태그목록

  • 전위연산
  • 동방환상마작
  • Filtering
  • 해로
  • PlugInOS
  • Shell
  • 한글
  • 디코드
  • 멀티맵
  • KDevelop
  • spirit
  • HTML Parser
  • 이미지 프로세싱
  • Parent
  • 플러그인
  • HTML 파서
  • Raw
  • 홈브류
  • 개인정보유출
  • Dynamic Programming
  • 탑코더
  • RLE8
  • Gradient
  • DP
  • ACM-ICPC
  • interface design guide
  • 6GB
  • LGT
  • Interpreter
  • Application.Run

지역로그 : 태그 : 방명록 : 관리자 : 글쓰기
귀차니스트’s Blog is powered by Textcube 1.7.5 : Risoluto / Designed by DesignNia.net