2667번

seuls2·2022년 10월 3일
0

BOJ

목록 보기
3/55
post-thumbnail

2667번

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n, cnt, map[25][25], visit[25][25];
int dx[4] = { -1,1,0,0 }, dy[4] = { 0,0,-1,1 };
vector<int> v;

void dfs(int x, int y) {
	for (int i = 0; i < 4; i++) {
		int tmpX = x + dx[i];
		int tmpY = y + dy[i];
		if (tmpX >= 0 && tmpX < n && tmpY >= 0 && tmpY < n && map[tmpX][tmpY] == 1 && !visit[tmpX][tmpY]) {
			cnt++;
			visit[tmpX][tmpY] = true;
			dfs(tmpX, tmpY);
		}
	}

}

int main() {
	cin >> n;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			scanf_s("%1d", &map[i][j]);
		}
	}

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (map[i][j] == 1 && !visit[i][j]) {
				cnt = 1;
				visit[i][j] = true;
				dfs(i, j);
				v.push_back(cnt);
			}
		}
	}

	sort(v.begin(), v.end());
	cout << v.size() << endl;
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << endl;
	}
}
profile
공부 기록용 ( ᵕ·̮ᵕ )♩

0개의 댓글

관련 채용 정보