본문 바로가기

Algorithm/BAEKJOON

[BOJ] 21736번 헌내기는 친구가 필요해 (C++)

728x90
반응형

https://www.acmicpc.net/problem/21736

 

21736번: 헌내기는 친구가 필요해

2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고

www.acmicpc.net

 

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

int n, m;
char map[601][601];
bool visit[601][601];
int cnt = 0;

int dx[4] = { 1, 0, -1, 0 };
int dy[4] = { 0, 1, 0, -1 };

void bfs(int i, int j) {
	visit[i][j] = true;

	queue<pair<int, int>> q;
	q.push(pair<int, int>(i, j));

	while (!q.empty()) {
		int nx = q.front().first;
		int ny = q.front().second;
		q.pop();

		for (int i = 0; i < 4; i++) {
			int x = nx + dx[i];
			int y = ny + dy[i];

			if (x >= 0 && y >= 0 && x < n && y < m && visit[x][y] == false) {
				if (map[x][y] == 'X') continue;
				if (map[x][y] == 'P') cnt++;
				visit[x][y] = true;
				q.push(pair<int, int>(x, y));
			}
		}
	}
}

int main() {
	cin >> n >> m;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> map[i][j];
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (map[i][j] == 'I') {
				bfs(i, j);
			}
		}
	}
	if (cnt == 0) cout << "TT" << endl;
	else cout << cnt << endl;
	return 0;
}
728x90
반응형

'Algorithm > BAEKJOON' 카테고리의 다른 글

[BOJ] 11279번 최대 힙 (C++)  (0) 2021.11.07
[BOJ] 1991번 트리 순회 (C++)  (0) 2021.11.06
[BOJ] 12865번 평범한 배낭 (C++)  (0) 2021.11.05
[BOJ] 1966번 프린터 큐 (C++)  (0) 2021.11.03
[BOJ] 4963번 섬의 개수 (C++)  (0) 2021.11.03