baekjoon 2667 본문

참고/아무거나

baekjoon 2667

뚜스머리 2022. 5. 27. 00:29
#include <stdio.h>
#include <algorithm>

#define MAXSIZE 25
int map[MAXSIZE][MAXSIZE] = {0,};
int result[MAXSIZE];
int idx;
int width;

char drx[4] = {1,0,-1,0};
char dry[4] = {0, -1, 0, 1};

int dfs(int x , int y)
{
    int count = 1;
    map[y][x] ++;
    for(int iter =0; iter <4; iter++)
    {
        int nX = x + drx[iter];
        int nY = y + dry[iter];

        if(nX <0 || nY <0 || nX >=width || nY >= width)
            continue;

        if(map[nY][nX] == 1)
            count += dfs(nX ,nY);
    }
    return count;
}

int run(int size)
{
    for(int i=0; i<size; i++)
    {
        for(int j=0; j<size; j++)
        {
            if(map[i][j] == 1)
                result[idx++] = dfs(j,i);
        }
    }
    return 0;
}

int BJ2667()
{
    idx = 0;
    scanf("%d", &width);

    for(int h_=0; h_<width; h_++)
    {
        char inputCMD[MAXSIZE];
        scanf("%s", inputCMD);
        for(int w_=0; w_<width; w_++) map[h_][w_] = (inputCMD[w_]=='1')?1:0;
    }

    run(width);
    printf("%d\n", idx);
    std::sort(result, result+idx);

    for(int i=0; i<idx; i++)
        printf("%d\n", result[i]);

    return 0;
}

 

'참고 > 아무거나' 카테고리의 다른 글

baekjoon 7569  (0) 2022.05.27
테스트 샘플  (0) 2017.07.26
테스트  (0) 2017.07.25
티스토리 초대장  (43) 2017.06.26
초대장  (6) 2017.06.18