Notice
Recent Posts
Recent Comments
Link
알고리즘 모음(C++)
백준 21736 - 헌내기는 친구가 필요해(C++) 본문
문제 링크입니다. https://www.acmicpc.net/problem/21736
4방향 탐색으로 친구를 찾아주는 문제였습니다.
'I'에서 시작해서 4방향 탐색으로 'P'를 찾는 문제였습니다.
'X'를 제외한 모든 곳을 탐색할 수 있음으로 이를 유의하여 문제를 풀면 됩니다.
자세한 것은 코드를 참고해주세요.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <cstring>
#include <string>
#include <cmath>
#define P pair<int,int>
#define F first
#define S second
using namespace std;
int N, M;
char map[601][601];
int check[601][601];
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};
P start;
int bfs(){
int Friend = 0;
queue<P> q;
q.push(start);
check[start.F][start.S] = 1;
while(!q.empty()){
int x = q.front().F;
int y = q.front().S;
q.pop();
for(int i = 0; i < 4; i++){
int xx = x + dx[i];
int yy = y + dy[i];
if(xx >= 1 && xx <= N && yy >= 1 && yy <= M){
if(check[xx][yy] == 0){
if(map[xx][yy] == 'P'){
check[xx][yy] = 1;
q.push({xx,yy});
Friend++;
}
else if(map[xx][yy] == 'O'){
check[xx][yy] = 1;
q.push({xx,yy});
}
}
}
}
}
return Friend;
}
void solve(){
int ans = bfs();
if(ans == 0) cout << "TT";
else cout << ans;
}
int main() {
cin.tie(0);
cout.tie(0);
cin >> N >> M;
for(int i = 1; i <= N; i++){
for(int j = 1; j <= M; j++){
cin >> map[i][j];
if(map[i][j] == 'I') start = {i,j};
}
}
solve();
return 0;
}
질문 및 조언은 댓글을 남겨주세요
'백준' 카테고리의 다른 글
백준 2225 - 합분해(C++) (0) | 2022.12.26 |
---|---|
백준 22352 - 항체 인식(C++) (0) | 2022.12.24 |
백준 11123 - 양 한마리... 양 두마리...(C++) (0) | 2022.12.12 |
백준 17086 - 아기 상어2(C++) (0) | 2022.12.12 |
백준 14940 - 쉬운 최단거리(C++) (0) | 2022.12.11 |