백준

백준 1012 - 유기농 배추

뚜비히히 2021. 1. 19. 16:27

이 문제는 DFS로 재귀로 문제를 풀 수 있었다. 우선 x기준 4방향, y기준 4방향을 배열에 넣어주고 현재 보고 있는 기준으로 다 돌려보고 배추가 있는지 찾고 있다면 바로 들어가서 탐색하고 나온다. 처음에는 stack에 넣어서 돌렸는데 시간초과가 났다. 그래서 재귀로 바꾸었더니 해결할 수 있었다.

 

www.acmicpc.net/problem/1012

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net

 

#include <iostream>
#include <vector>
using namespace std;

vector <pair<int, int>> way;

int m, n, k;
int arr[51][51];

int xx[4] = { 0,1,0,-1 };
int yy[4] = { 1,0,-1,0 };

void find(int x, int y) {
	if (arr[x][y] == 1) {
		arr[x][y] = 0;
		for (int s = 0; s < 4; s++) {
			int a = xx[s] + x;
			int b = yy[s] + y;
			if (a >= 0 && y >= 0 && a < m && b < n) {
				find(a, b);
			}
		}
	}
}
int main() {
	int testcase;
	cin >> testcase;
	
	while (testcase--) {
		cin >> m >> n >> k;
		for (int i = 0; i < k; i++) {
			int a, b;
			cin >> a >> b;
			way.push_back({ a, b });
			arr[a][b] = 1;
		}

		int ans = 0;

		for (int i = 0; i < way.size(); i++) {
			if (arr[way[i].first][way[i].second] == 1) {
				find(way[i].first, way[i].second);
				ans++;
			}
		}
		cout << ans << '\n';
	}

}

 

'백준' 카테고리의 다른 글

백준 15652 - N과 M(4)  (0) 2021.05.15
백준 15651 - N과 M(3)  (0) 2021.05.15
백준 4948 - 베르트랑 공준  (0) 2021.01.18
백준 1193 - 분수찾기  (0) 2021.01.18
백준 11054 - 가장 긴 바이토닉 부분 수열  (0) 2021.01.18