Algorithm Traning Book - 두 번째 문제

Algorithm 2008/06/09 23:29 귀차니스트

  음 뭐 책을 사놓고 도통 보지 않는 것 같아 오늘 야근 하고 돌아온 김에 잠시 봤는데 시간이 없어 많은 것을 생각하는 문제는 선택하지 못하고 아주 간단한 문제를 선택해봤습니다. 아무래도 첫 술부터 배부를 수는 없듯이 차근차근 있는 문제 그냥 연습한다 치고 하나씩 풀어보기로 했습니다.
  문제의 이름은 Mine Sweeper네요. 대충 입력, 출력의 예와 코드 는 다음과 같습니다.

입력

4 4
*...
....
.*..
....

출력
*100
2210
1*10
1110


MineSweeper.cpp (Language : cpp)
  1. #include <iostream>
  2. int Width, Height;
  3. char MineField[100][100];
  4. int GetField(int col, int row)
  5. {
  6.     if( (0 <= col && col < Height) &&
  7.         (0 <= row && row < Width )) {
  8.         return (MineField[col][row] == '*' ? 1 : 0);
  9.     }
  10.     return 0;
  11. }
  12. char Calculate(int col, int row)
  13. {
  14.     if( GetField(col, row) )
  15.         return '*';
  16.     int Count = 0;
  17.     Count += GetField( col - 1, row - 1 );
  18.     Count += GetField( col - 1, row );
  19.     Count += GetField( col - 1, row + 1 );
  20.     Count += GetField( col, row - 1 );
  21.     Count += GetField( col, row + 1 );
  22.     Count += GetField( col + 1, row - 1 );
  23.     Count += GetField( col + 1, row );
  24.     Count += GetField( col + 1, row + 1 );
  25.     return '0' + Count;
  26. }
  27. int main( int argc, char **argv )
  28. {
  29.     while( true )   {
  30.         std::cin >> Width >> Height;
  31.         if( Width == 0 && Height == 0 )
  32.             break;
  33.         for( int i = 0; i < Height; ++i )   {
  34.             for( int j = 0; j < Width; ++j )    {
  35.                 std::cin >> MineField[i][j];
  36.             }
  37.         }
  38.         for( int i = 0; i < Height; ++i )   {
  39.             for( int j = 0; j < Width; ++j )    {
  40.                 std::cout << Calculate(i, j);
  41.             }
  42.             std::cout << std::endl;
  43.         }
  44.     }
  45.     return 0;
  46. }


  복잡한 문제는 아니죠^^? 그냥 아주 간단하길래 대충 생각하고 대충 풀었습니다. 코드가 즈질 이군요 ㅎㅎ
계속해서 한 문제씩 차근차근 풀어봐야 겠습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

"Algorithm" 분류의 다른 글

Dovelet - (1) (0)2010/03/13
Algorithm Traning Book - 다섯번째 문제 (0)2008/06/15
Algorithm Traning Book - 세 번째 문제 (0)2008/06/10
2008/06/09 23:29 2008/06/09 23:29

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

댓글을 달아 주세요