개발자 톡

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

장애물인식프로그램 문제

등록일
2023-07-30 14:49:06
조회수
427
작성자
tndud250

#include <stdio.h>


int visited[26][26];        // 방문 여부 체크 
int map[26][26];
int numb=0;
int num[700]={0,};
int as=0;

int DFS(int row,int col, int n){


    for(int i=-1; i<=1; i++){ 
        for (int j=-1; j<=1; j++)  
        {
            if((map[row+i][col+j] == 1 )&& (visited[row+i][col+j] == 0) &&(1<=row+i &&row+i<=n )&&(1<=col+j &&col+j<=n) ){    
                visited[row+i][col+j] = 1;
                numb++ ;   
                DFS(row+i, col+j,n);
            }
        }
    }
}
int main(void)
{

    int M =0;
    int k =0
    int temp=0;
    scanf("%d", &M);
    

    for (int i =1; i<=M ;i++)
    {
        for (int j=1 ; j<=M ;j++)
        {
   
            scanf("%1d",&map[i][j] );
        }
    
    }
    
    for (int i =1; i<=M ;i++)
    {
        for (int j=1 ; j<=M ;j++)
        {
            numb = 0 ;
            DFS(i, j,M);
            if  (numb >= 1)
             {
                num[k] = numb ;
                k++;
                as++;   
                
             }
        }
    
    }


    for (int i = 0; i < k; i++) {
        for (int j = 0; j < (k-1 ) - i; j++) {
            if (num[j] > num[j + 1]) {  // 버블 정렬 사용
                temp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = temp;
            }
        }
    }


    printf("%d",as );
    printf("\n" );
    for (int i = 0; i < k; i++)
    {
        printf("%d",num[i] );
        printf("\n" );
    }

    

    return 0;
}








================================ 테스트 결과-=================================================

반례부탁드립니다. 감사합니다.
1TC1정답5.0ms0.69mb
2TC10오답3.0ms0.91mb
3TC2정답3.0ms1.09mb
4TC3오답3.0ms0.85mb
5TC4정답3.0ms0.85mb
6TC5정답3.0ms0.85mb
7TC6오답3.0ms0.84mb
8TC7오답3.0ms0.84mb
9TC8오답3.0ms0.97mb
10TC9오답3.0ms0.86mb
#장애물_인식_프로그램
#c_언어

이 카테고리의 톡 더보기