Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
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
Tags
more
Archives
Today
Total
관리 메뉴

끄적끄적

백준 [1012] 유기농 배추 본문

코테준비/백준

백준 [1012] 유기농 배추

alstj_성공 2022. 8. 18. 18:44

출처 : https://www.acmicpc.net/problem/1012

 

1012번: 유기농 배추

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

www.acmicpc.net

 

#include<iostream>
#include<cstring>
using namespace std;
int map[51][51];
bool visited[51][51];
int T, M, N, K;
int dx[4] = { 0,0,-1,1 };
int dy[4] = { 1,-1,0,0 };
void dfs(int x, int y) {
if (!map[x][y] || visited[x][y])
return;
visited[x][y] = true;
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx >= 0 && nx < M && ny >= 0 && ny < N) {
dfs(nx, ny);
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int X, Y;
cin >> T;
for (int i = 0; i < T; i++) {
int ans = 0;
memset(visited, false, sizeof(visited));
memset(map, 0, sizeof(map));
cin >> M >> N >> K;
for (int i = 0; i < K; i++) {
cin >> X >> Y;
map[X][Y] = 1;
}
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
if (!visited[i][j] && map[i][j]) {
ans++;
dfs(i, j);
}
}
}
cout << ans << '\n';
}
return 0;
}
view raw 1012.cpp hosted with ❤ by GitHub

dfs / bfs

dfs 시작점이 방문한적 없고 1이면 수를 1 증가시켜준다음 dfs함수를 실행한다.

탐색 도중 해당칸이 0이거나 방문한 적이 있으면 리턴한다.

또한, 테스트케이스가 여러 개이므로 각 경우마다 배열을 초기화해주는 작업이 필요하다.

-> memset(배열, 초기화하고 싶은 값, sizeof(배열));

memset은 cstring을 헤더로 사용한다. 

(visual studio에서는 헤더를 포함시키지 않아도 에러가 나지 않았는데, 제출할 때 컴파일 에러가 남)

'코테준비 > 백준' 카테고리의 다른 글

백준 [2644] 촌수계산  (0) 2022.08.23
백준 [2589] 보물섬  (0) 2022.08.22
백준 [20166] 문자열 지옥에 빠진 호석  (0) 2022.08.16
백준 [13904] 과제  (0) 2022.08.15
백준 [11000] 강의실 배정  (0) 2022.08.14