<문제>
<Code>
//21736] 헌내기는 친구가 필요해
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string s[601];
int ch[601][601];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int n, m, res;
void DFS(int x, int y){
int nx, ny; //앞으로 이동할 좌표
if(s[x][y]=='P'){
res++;
}
for(int i=0; i<4; i++){
nx=x+dx[i];
ny=y+dy[i];
if(nx<0 || ny<0 || nx>=n || ny>=m){ //캠퍼스의 끝이면
continue;
}
if(s[nx][ny]!='X' && ch[nx][ny]==0){ //벽이 아니고, 방문한적이 없다면
ch[nx][ny]=1;
DFS(nx, ny);
}
/*
if(nx>=0 && ny>=0 && nx<n && ny<m && ch[nx][ny]==0){
if(s[nx][ny]!='X'){
ch[nx][ny]=1;
DFS(nx, ny);
}
}
*/
}
}
int main() {
freopen("input.txt","rt", stdin);
int ii, jj; //DFS() 호출을 위한 임시변수
scanf("%d %d", &n, &m);
for(int i=0; i<n; i++){
cin>>s[i];
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(s[i][j]=='I'){
ch[i][j]=1; //방문체크
ii=i;
jj=j;
}
}
}
DFS(ii, jj);
if(res==0){
printf("TT");
}else{
printf("%d", res);
}
return 0;
}
<Comment>
전형적인 DFS로 상하좌우 탐색하면서 만날 수 있는 친구 수를 세는 문제.
https://www.acmicpc.net/problem/21736
21736번: 헌내기는 친구가 필요해
2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고
www.acmicpc.net
'Problem Solving > 백준' 카테고리의 다른 글
[백준-20551] Sort 마스터 배지훈의 후계자 (0) | 2021.07.30 |
---|---|
[백준-21735] 눈덩이 굴리기 (0) | 2021.07.30 |
[백준-21968] 선린의 터를 (0) | 2021.07.25 |
[백준-22114] 창영이와 점프 (0) | 2021.07.25 |
[백준-21964] 선린인터넷고등학교 교가 (0) | 2021.07.21 |