Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- urlretrieve
- 베이즈법칙
- ssh원격
- Python
- non block
- 티스토리
- 머신러닝
- 파이썬 웹 개발
- ultrawave sensor
- 베이즈이론
- 웹 크롤링
- 아두이노 스케치
- CSV
- 파이참 가상환경
- 아두이노
- ssh파일
- MEGA2560
- 초음파
- 파이썬 장고
- 텍스트 검색
- 스케치
- bs4
- 확률공부
- 파이썬 가상환경
- BeautifulSoup
- 파이썬
- 초대장
- 확률모델
- ssh전송
- Arduino
Archives
- Today
- Total
잡
baekjoon 2667 본문
#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;
}