문제
https://www.acmicpc.net/problem/1012
코드
#include <bits/stdc++.h>
using namespace std;
int matrix[50][50];
int T, M, N, K, X, Y;
int cnt = 0;
queue<pair<int, int>> q;
int dy[4] = { -1, 1, 0, 0 };
int dx[4] = { 0, 0, -1, 1 };
void BFS() {
while (!q.empty()) {
pair<int, int> front = q.front(); q.pop();
for (int i = 0; i < 4; i++) {
int newX = front.first + dx[i];
int newY = front.second + dy[i];
if (newX < 0 || newX >= M || newY < 0 || newY >= N) continue;
if (matrix[newY][newX] != 1) continue;
matrix[newY][newX] = 0; // 방문 처리
q.push(make_pair(newX, newY));
}
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> T;
for (int tc = 0; tc < T; tc++) {
cin >> M >> N >> K;
for (int i = 0; i < N; i++) {
fill(matrix[i], matrix[i] + M, 0); // 행렬 초기화
}
for (int i = 0; i < K; i++) { // 입력
cin >> X >> Y;
matrix[Y][X] = 1;
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (matrix[i][j] == 1) {
matrix[i][j] = 0;
pair<int, int> p = make_pair(j, i); // (X, Y)
q.push(p);
BFS();
cnt++;
}
}
}
cout << cnt << '\n';
cnt = 0;
}
}
문제점 및 참고사항
- 행, 열에 대한 변수 정확히 파악하기
- 시작점 관련 처리 (방문 처리 등) 파악
- 테스트 케이스마다 해야하는 처리 (변수 초기화 등) 파악
'Programming > PS' 카테고리의 다른 글
[백준 9663] N-Queen (0) | 2024.09.07 |
---|---|
[백준 1697] 숨바꼭질 (0) | 2024.08.30 |
[백준 1874] 스택 수열 (0) | 2024.07.31 |