Computer Science&Engineering/코딩테스트
[백준 1012] 유기농 배추
EDDO
2021. 3. 17. 12:59
# 문제링크
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
섬 개수 세는 문제랑 비슷한 문제다. DFS로 같은 섬의 방문한 map을 다시 0으로 변경시켜주어 다시 세지 않도록 한다. 모든 1을 0으로 바꿔주었기 때문에 여러 번 반복하더라도 초기화 할 필요가 없어서 좋다.
# 제출 코드
# include <cstdio>
char map[50+2][50+2];
int T, M, N, K;
int yd[] = { 1, -1, 0,0 };
int xd[] = { 0, 0, 1, -1 };
void Input() {
scanf("%d %d %d", &M, &N, &K);
int x, y;
for (int i = 0; i < K; i++) {
scanf("%d %d", &x, &y);
map[y][x] = '1';
}
}
void DFS(int y, int x) {
if (map[y][x] != '1') return;
map[y][x] = '0';
for (int i = 0; i < 4; i++) {
int ny = y + yd[i];
int nx = x + xd[i];
if (nx < 0 || nx > M || ny < 0 || ny > N)continue;
if (map[ny][nx] == '1')
DFS(ny, nx);
}
}
void Solve() {
int ans = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (map[i][j] == '1') {
ans++;
DFS(i,j);
}
}
}
printf("%d\n", ans);
}
int main() {
scanf("%d", &T); // 테스트 케이스 개수
while (T--) {
Input();
Solve();
}
return 0;
}
반응형