쉬운문제부터 공략하자 ~! ㅋ
아무래도 UVA중에 가장 쉬운 문제라고 생각한다. ㅎ
초보인 나에게 이러한 문제는 정말 반갑기 그지없다 ~~ ㅎ
출력때문에 황당했지만 ㅠ

#include <stdio.h>

int x[8]={-1,0,1,1,1,0,-1,-1};

int y[8]={1,1,1,0,-1,-1,-1,0};

int n,m;

char mine[100][100];

int minesweeper(int mx,int my){

 int i,cnt=0;

 for(i=0;i<8;i++){

  if(mx+x[i] > -1 && mx+x[i] < n && my+y[i] > -1 && my+y[i] < m){

   if(mine[mx+x[i]][my+y[i]]=='*')

    cnt++;

  }

 }

 return cnt;

}

int main(){

 int i,j,minecnt,programcnt=0;

 char buffer;

 n=m=1;

 while(n!=0 && m!=0){

  scanf("%d %d",&n,&m);

  scanf("%c",&buffer);

  if(n==0 && m==0)

   break;

  for(i=0;i<n;i++){

   for(j=0;j<m;j++){

    scanf("%c",&mine[i][j]);

   }

   scanf("%c",&buffer);

  }

  if(programcnt==0)

   printf("Field #%d:\n",++programcnt);

  else

   printf("\nField #%d:\n",++programcnt);

  for(i=0;i<n;i++){

   for(j=0;j<m;j++){

    if(mine[i][j]=='*')

     printf("%c",mine[i][j]);

    else{

     minecnt=minesweeper(i,j);

     printf("%d",minecnt);

    }

   }

   printf("\n");

  }

 }

 return 0;

}

3통이므로 3! = 6 가지(모든경우)를 분석해보면 됨...
나같이 초보인 사람에게는 연습문제 같은 좋은 문제 ㅎㅎㅎ


101 The Blocks Problem
스택개념인데..
나름대로 시간복잡도 줄여볼려고 노력하다... 머리가 터질 뻔했다. ㅠㅠ
배열안의 배열을 적극 확용한 문제 ㅋㅋㅋㅋㅋ
100 The 3n + 1 problem

UVA에서 처음 풀어본 문제...
int로 계속하다가 연이은 WA.. ㅠ
간단한건데 시간만 조넨 낭비한 느낌...
동적으로도 나중에 풀어봐야지 ^^

+ Recent posts