Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 백트래킹
- map
- 오블완
- DP
- 정렬
- 에라토스테네스의 체
- 문자열
- 이분탐색
- 그래프
- DFS
- int
- 백준
- 유클리드호제법
- 다이나믹프로그래밍
- 깊이우선탐색
- 배열
- priority_queue
- stoi
- 우선순위큐
- N과M
- BFS
- Set
- 분할정복
- Sort
- 최소공배수
- vector
- C++
- 알고리즘
- 프로그래머스
- 티스토리챌린지
Archives
- Today
- Total
안녕 세상아,
[c++/백준] 1012 유기농 배추 본문
https://www.acmicpc.net/problem/1012
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
일반적인 그래프에 조건이 있는 문제였다.
사실 이런 문제를 처음 풀어봐서 다른 사람 코드를 이해하는 것도 오래 걸렸다.
내가 이해한 자세한 설명은 코드에 적어놨다.
#include <iostream>
#include <cstring> //memset 사용하기 위함
using namespace std;
int m, n, k;
int dx[4] = { 1,0,-1,0 };
int dy[4] = { 0,1,0,-1 };
bool isVisited[51][51] = { false };
int map[51][51];
void dfs(int a, int b) {
//상하좌우에 연결되어있으면 하나로 취급해주기 위함
for (int i = 0; i < 4; i++) {
if (isVisited[a + dx[i]][b + dy[i]] == false && map[a + dx[i]][b + dy[i]] == 1) {
isVisited[a + dx[i]][b + dy[i]] = true;
dfs(a + dx[i], b + dy[i]);
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int t;
cin >> t;
int cnt = 0;
for (int i = 0; i < t; i++) {
cin >> m >> n >> k;
//인접 리스트 만들기
for (int j = 0; j < k; j++) {
int a, b;
cin >> a >> b;
map[a][b] = 1;
}
if (k == 1) {
cout << 1 << '\n';
continue;
}
//방문되지 않고, 배추가 심어져있을 때 dfs 돌리고 나오면 cnt++
for (int x = 0; x < n; x++) {
for (int y = 0; y < m; y++) {
if (isVisited[y][x] == false && map[y][x] == 1) {
dfs(y, x);
cnt++;
}
}
}
cout << cnt << '\n';
cnt = 0; //cnt 초기화
//메모리 초기화
memset(isVisited, false, sizeof(isVisited));
memset(map, 0, sizeof(map));
}
return 0;
}
이걸 또 템플릿으로 생각하고 맨날 풀어봐야할듯. 일단 지금은 이해하긴 했는데 안하다보면 또 까먹을 듯..
'백준' 카테고리의 다른 글
[c++/백준] 18870 좌표 압축 (0) | 2023.06.16 |
---|---|
[c++/백준] 4963 섬의 개수 (bfs) (0) | 2023.06.15 |
[c++/백준] 11279 최대 힙 (0) | 2023.06.12 |
[c++/백준] 14889 스타트와 링크 (1) | 2023.06.12 |
[c++/백준]1927 최소 힙 (1) | 2023.06.10 |