๐Ÿ‘ฟ2636๋ฒˆ. ์น˜์ฆˆ_๋‹ค์‹œ ํ’€์ž. : 240329

phoenixKimยท2022๋…„ 9์›” 4์ผ
0

๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
104/174

์ตœ๊ทผ ํ’€์ด : 240329 -> ์˜ค๋ž˜ ๊ฑธ๋ฆผ.

ํ‚ค์›Œ๋“œ : ํ‹€๋ฆผ.

  • ํ‹€๋ฆฐ ํ’€์ด
    : ์•„๋ž˜ ํ’€์ด๋กœ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ. ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
#include <iostream>
using namespace std;

#include <vector>
#include <queue>

int n, m;
vector<vector<int>> v;
vector<vector<bool>> check;


int bfs(int _y, int _x)
{
	vector<pair<int, int>> temp;

	int num = 0;
	queue<pair<int, int>> q;
	q.push(make_pair(_y, _x));
	check[_y][_x] = true;

	// ์ƒํ•˜์ขŒ์šฐ
	vector<pair<int, int>> dir =
	{ {-1,0} ,{1,0} , {0,-1} , {0,1} };

	while (!q.empty())
	{
		pair<int, int> curVer = q.front();
		q.pop();
		check[curVer.first][curVer.second] = true;

		for (int i = 0; i < 4; ++i)
		{
			// 0์ผ ๊ฒฝ์šฐ์— ๋„ฃ๊ณ , 
			int nextY = curVer.first + dir[i].first;
			int nextX = curVer.second + dir[i].second;


			// ๋ฒ”์œ„ ์ฒดํฌ 
			if (nextY < 0 || nextY >= n
				|| nextX < 0 || nextX >= m)
			{
				continue;
			}
			// ๋ฐฉ๋ฌธ ์ฒดํฌ 
			if (check[nextY][nextX] == true)
			{
				continue;
			}

			if (v[nextY][nextX] == 0)
			{
				q.push(make_pair(nextY, nextX));
				check[nextY][nextX] = true;
			}
			else if(v[nextY][nextX] == 1)
			{
				++num;
				v[nextY][nextX] = 0;
				check[nextY][nextX] = true;

				//vector์—๋‹ค๊ฐ€ ๊ธฐ๋กํ•œ๋‹ค์Œ์— ์ข…๋ฃŒ ์ „์— 
				// check ๋ณ€์ˆ˜ ์›๋ณตํ•˜์ž.
				temp.push_back(make_pair(nextY, nextX));
			}
		}
	}

	for (int i = 0; i < temp.size(); ++i)
	{
		int y = temp[i].first;
		int x = temp[i].second;
		check[y][x] = false;
	}

	return num;
}

int main()
{
	// 1์ธ ๋ถ€๋ถ„์„ ์ง€์šฐ๊ณ  
	// ์ „๋ถ€ ์ง€์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ. 

	// 0์ธ ๋ถ€๋ถ„ ๋ถ€ํ„ฐ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. 
	// ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ธ์ ‘ํ•œ ๋ถ€๋ถ„์—์„œ 1 ๋ฐœ๊ฒฌ ํ•˜๋ฉด 
	// 0์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋›ฐ์ณ ๋‚˜์˜ค๊ณ , ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ ํ•ด๋‹น ์‹œํ€€์Šค์—์„œ๋Š”
	// ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋˜๋ฉด ๋“ค์–ด๊ฐ€์ง€ ๋ชปํ•˜์ž.

	// ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋œ ์ •์ ์„ ํ†ตํ•ด์„œ๋Š” ์ธ์ ‘ ์‹œํ€€์Šค ์ง„ํ–‰ ๋ชปํ•˜๊ฒŒ ๋ง‰์ž.

	cin >> n >> m;
	v.resize(n, vector<int>(m));
	check.resize(n, vector<bool>(m, false));

	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < m; ++j)
		{
			cin >> v[i][j];
		}
	}
	int num = 0;
	int cnt = 0;
	// ๋ถˆ๋ณ€์ˆ˜ ๋งŒ๋“ค์–ด์„œ ์ด๋ฏธ ๋“ค์–ด๊ฐ„ ์ •์ ์— ๊ด€ํ•ด์„œ ํ•  ํ•„์š” ์—†๋‹ค.

	// ์—ฌ๋Ÿฌ๋ฒˆ ์ˆœํšŒํ•˜๋Š” ๊ฑฐ๋ฅผ ์ด์ค‘ ํฌ๋ฌธ์ด๋ž‘ bfs 
	// ๋ถˆ๋ณ€์ˆ˜ ์ฒดํฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์นด์šดํŒ… 

	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < m; ++j)
		{
			if (check[i][j] == false)
			{
				num = bfs(i, j);
				if (num != 0)
				{
	
					++cnt;
					cout << num << endl;
				}
			}
		}
	}

	

	cout << "result" << " ";
	cout << cnt;
	//cout << bfs(0, 0);
}
  • -> ์ด ์ฝ”๋“œ๋กœ ํ•˜๋ฉด , ๋ฐฉ๋ฌธ ์ฒดํฌ๋กœ ์ธํ•ด

  • ์ถœ๋ ฅํ•˜๋ฉด
    ์•„๋ž˜์ฒ˜๋Ÿผ ๋‚˜์˜ค๋Š”๋ฐ 4 , 20 , 3์ด ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋กœ ์˜†์— 2๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„๋ฅผ
    ํ•œ๋ฒˆ์— ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ....

  • -> ์ด๊ฒƒ์ฒ˜๋Ÿผ ๋‚˜๋ˆ ์„œ ํƒ์ƒ‰ ํ•œ๊ฑฐ๋‹ค.
    : ๊ฒ€์ •์ƒ‰์€ ๋น„์–ด์žˆ๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ํ•œ๋ฒˆ์— ์ง„ํ–‰ํ•œ ๊ฒƒ์ด๋‹ค.

  • ์–ด๋–ค ์ƒ๊ฐ์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๋ฉด , ๋ฐฉ๋ฌธ์ฒดํฌ๋Š” ์˜ค๋กœ์ง€ bfs๋งŒ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
    : ์™œ๋ƒํ•˜๋ฉด 2๋ฒˆ์งธ bfs ๋Œ๋•Œ, ์—ฌ๊ธฐ์„œ ๋ฐ”๋กœ ๋›ฐ์ณ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

์ตœ์ข… ์ฝ”๋“œ : 240329

  • ๋ฐฉ๋ฌธ์ฒดํฌ๋Š” bfs ๋งŒ ํ•˜๊ณ  , bfs ๋Š” 2์ค‘ for๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•จ.
    -> ํ†ต๊ณผ...


์ตœ์ข… ์ฝ”๋“œ

https://www.acmicpc.net/source/share/918889c66f1c4ace9ed54fbfccd2c20b

  • ๊ฒฐ๊ณผ

๊ฐœ์„ ํ•ด์•ผ ํ•  ์ .

1) ๋ฒˆ : ํ’€์ด์ „๋žต์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ

  • ๋‚ด ํ’€์ด์ „๋žต์œผ๋กœ ํ•œ๋ฒˆ ์ž…๋ ฅ ์˜ˆ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์ง„ํ–‰์„ ํ–ˆ๋Š”๋ฐ,
  • ์ ˆ๋Œ€ ๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ๊ตฌ์กฐ๋ผ๋ฉด? ๋‹ค๋ฅธ ํ’€์ด์ „๋žต์œผ๋กœ ์ ‘๊ทผ ํ•ด์•ผํ•จ.

2) ๋ฒˆ : ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์˜ ์›์†Œ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹˜.

  • ์›์†Œ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์•ˆ๋˜๋Š” ๋ฌธ์ œ์ž„.

ํ’€์ด์ „๋žต

  • ๊ธฐ์ค€์„ ์›์†Œ๊ฐ€ 1์ธ ๋ถ€๋ถ„์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ ์ธ์ ‘ํ•œ ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ–ˆ๋Š”๋ฐ
    ์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋˜๋ฉด, ๊ฐ€์šด๋ฐ , ๋…ธ๋ž€์ƒ‰ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ
    ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•จ.

    -> ๊ณ ๋ฏผํ•˜๋Š” ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ์ง€๋งŒ, ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•˜์ง€๋Š” ๋ชปํ•จ.

์ด๋ ‡๊ฒŒ ํ•˜์ž.

  • ๊ธฐ์ค€์„ ๋ฐ”๊นฅ์ชฝ 0์ธ ๋ถ€๋ถ„ ๋”ฑ ํ•œ๊ฐœ๋กœ ํ•ด์„œ ์ง„ํ–‰ํ•˜์ž.
    ์›์†Œ๊ฐ€ 0์ธ ๋ถ€๋ถ„์„ ํ•˜๋ฉด ์•ˆ๋˜๊ณ !
    -> 0์ธ๋ถ€๋ถ„์„ ํ™•์ธํ•ด์„œ ์ธ์ ‘ํ•œ ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ, ๋…ธ๋ž€์ƒ‰ ๋ถ€๋ถ„๋„ ์ฒ˜๋ฆฌ๊ฐ€ ๋จ.
    --> ๊ฒ‰์—๋งŒ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์ธ์ ‘ํ•œ ๋ถ€๋ถ„์—์„œ 1์„ ๋งŒ๋‚˜๋ฉด, ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•ด๋ฒ„๋ฆฌ์ž.
    ์ด๋ ‡๊ฒŒ ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜๋ฉด,

    ---> ๋ฐ”๊นฅ๋ฉด๋งŒ ํ™•์ธ์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž„.
profile
๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด