개발자 톡

연습문제 톡 장애물 인식 프로그램

c언어 코드 공유

등록일
2024-03-23 08:18:13
조회수
332
작성자
yeinseo1142

#include <stdio.h>

void swap(int* pa,int* pb){

   

    int temp=*pa;

    *pa=*pb;

    *pb=temp;

   

}

int squar[25][25]={0};

int check[25][25]={0};

int cnt=0;

int N;

int ans[25*25];

int dx[]={1,-1,0,0};

int dy[]={0,0,1,-1};

   

void dfs(int x,int y){

   

  check[x][y]=1;

  cnt++;


  for (int i=0;i<4;i++){

    int xx=x+dx[i];

    int yy=y+dy[i];

    if(xx<0||yy<0||xx>=N||yy>=N||squar[xx][yy]==0) continue;

     

    if(check[xx][yy]==0) {

      check[xx][yy]=1;

      dfs(xx,yy);

    }

  }

}

int main(void)

{

   

  scanf("%d",&N);

   

  for(int i=0;i<N;i++){

    for (int j=0;j<N;j++){////

    scanf("%1d",&squar[i][j]);}//한자리 숫자만 입력받는다 1안쓰면 입력 제대로 안됨

  }

   

  int anssize=0;

  for(int i=0;i<N;i++){

    for(int j=0;j<N;j++){

      if(check[i][j]!=0||squar[i][j]==0) 

        continue;

       

      cnt=0;

      dfs(i,j);

      ans[anssize++] = cnt;

     

    }

    }


  for (int i = 0; i < anssize - 1; i++)

  {

    for (int j = 0; j < anssize - i - 1; j++)

    {

      if (ans[j] > ans[j + 1])

      {

        swap(&ans[j],&ans[j+1]);

      }

    }

  }

  printf("%d\n",anssize);

   

  for(int i=0;i<anssize;i++){

  printf("%d\n",ans[i]);}


  return 0;

}


#장애물_인식_프로그램
#c언어
#c

이 카테고리의 톡 더보기