์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- db
- ๋จธ์ง์ํธ
- DFS
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ์ด์ฌ
- ์๊ณ ๋ฆฌ์ฆ
- ๊ทธ๋ฆฌ๋
- DP
- ๊ทธ๋ํ
- ๋ฐฑ์ค
- ์๋ฃ๊ตฌ์กฐ
- LIS
- ๋์ ํฉ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๋๋น์ฐ์ ํ์
- BFS
- ๊น์ด์ฐ์ ํ์
- ์์๊ตฌํ๊ธฐ
- ๊ตฌํ
- ์ค๋ธ์
- ์ ๋ ฌ
- SQL
- ๋์ ๊ณํ๋ฒ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์์ํ์
- ๋ณํฉ์ ๋ ฌ
- ๊ทธ๋ํํ์
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ์ฐ์ ์์ํ
- ์ํ
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 2667๋ฒ: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ - C++ ๋ณธ๋ฌธ
๋ฌธ์
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ๊ธฐ์ ์ฐ๊ฒฐ๋์๋ค๋ ๊ฒ์ ์ด๋ค ์ง์ด ์ข์ฐ, ํน์ ์๋์๋ก ๋ค๋ฅธ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ๋๊ฐ์ ์์ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ ์ฐ๊ฒฐ๋ ๊ฒ์ด ์๋๋ค. <๊ทธ๋ฆผ 2>๋ <๊ทธ๋ฆผ 1>์ ๋จ์ง๋ณ๋ก ๋ฒํธ๋ฅผ ๋ถ์ธ ๊ฒ์ด๋ค. ์ง๋๋ฅผ ์ ๋ ฅํ์ฌ ๋จ์ง์๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ฐ ๋จ์ง์ ์ํ๋ ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์ง๋์ ํฌ๊ธฐ N(์ ์ฌ๊ฐํ์ด๋ฏ๋ก ๊ฐ๋ก์ ์ธ๋ก์ ํฌ๊ธฐ๋ ๊ฐ์ผ๋ฉฐ 5≤N≤25)์ด ์ ๋ ฅ๋๊ณ , ๊ทธ ๋ค์ N์ค์๋ ๊ฐ๊ฐ N๊ฐ์ ์๋ฃ(0ํน์ 1)๊ฐ ์ ๋ ฅ๋๋ค.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์ด ๋จ์ง์๋ฅผ ์ถ๋ ฅํ์์ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋จ์ง๋ด ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ์์ค.
์ฐ์ ์ ์ผ๋ก ํ์ค์ฉ ์ ๋ ฅ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๊ทธ๋ํ ๋ฐฐ์ด์ ๋ฃ๊ธฐ ์ํด string์ผ๋ก ๋ฐ์ ํ, ํ ๋ฌธ์์ฉ 0๊ณผ 1๋ก ๊ตฌ๋ถํ์ฌ ๊ทธ๋ํ์ ์ง์ด๋ฃ์๋ค.
์ดํ DFS๋ฅผ ํตํด ์ํ์ข์ฐ ๋ฐฉํฅ์ผ๋ก ์ง์ด ์๋ ๊ณณ์ ํ์ธํ๋ฉฐ ๋จ์ง ๋ด ์ง์ ์๋ฅผ ์ธ์ด์ค๋ค. ํ ๋จ์ง ๋ด ํ์์ด ์๋ฃ๋ ๋ ๋ง๋ค sorting ์ด๋ผ๋ ๋ฒกํฐ ์๋ฃํ์ ํ ๋จ์ง ๋ด ์ง์ ์๋ฅผ ๋ฃ์ด์ฃผ๊ณ , ๊ทธ๋ํ ํ์ ์๋ฃ ํ sorting ํจ์๋ฅผ ํตํด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
์ฝ๋
#include <cstdio>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#define MAX 26
using namespace std;
int graph[MAX][MAX];
int dx[] = { -1, 1, 0, 0 };
int dy[] = { 0, 0, -1, 1 };
int n, c;
vector<int> sorting;
void DFS(int a, int b);
int main()
{
scanf("%d", &n);
string temp;
for(int i = 1; i <= n; i++) {
cin >> temp;
for(int j = 1; j <= n; j++) {
graph[i][j] = (temp[j - 1] - '0');
}
}
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
if(graph[i][j] == 1) {
c = 0;
DFS(i, j);
sorting.push_back(c);
}
}
}
sort(sorting.begin(), sorting.end());
printf("%lu\n",sorting.size());
for(int i = 0; i < sorting.size(); i++) {
printf("%d\n", sorting[i]);
}
return 0;
}
void DFS(int a, int b)
{
graph[a][b] = 0;
c++;
for(int i = 0; i < 4; i++) {
if(a + dy[i] < 1 || a + dy[i] > n || b + dx[i] < 1 || b + dx[i] > n) continue;
if(graph[a + dy[i]][b + dx[i]] == 1)
DFS(a + dy[i], b + dx[i]);
}
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 7576๋ฒ: ํ ๋งํ - C++ (0) | 2022.01.03 |
---|---|
[๋ฐฑ์ค] 4963๋ฒ: ์ฌ์ ๊ฐ์ - C++ (0) | 2021.12.27 |
[๋ฐฑ์ค] 2331๋ฒ: ๋ฐ๋ณต์์ด - C++ (0) | 2021.12.23 |
[๋ฐฑ์ค] 11724๋ฒ: ์ฐ๊ฒฐ ์์์ ๊ฐ์ - C++ (0) | 2021.12.22 |
[๋ฐฑ์ค] 1260๋ฒ: DFS์ BFS - C++ (0) | 2021.12.21 |