본문 바로가기
Algorithm 💫/Problem Solving

[백준] 1743번: 음식물 피하기 / C++

by 돼지고기맛있다 2021. 9. 16.
반응형

✏️ 문제 링크

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

 

1743번: 음식물 피하기

첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다.  그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다

www.acmicpc.net

 

 

✏️ 문제 설명 (더보기 클릭 👆🏻)

 

✏️ 문제 코드

#include <bits/stdc++.h>
using namespace std;

int N, M, K, cnt=0; 

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

char f[101][101];
bool vis[101][101];

void dfs(int x, int y){
    vis[x][y]=true;
    cnt++;
    for(int i=0; i<4; i++){
        int nx= x+dx[i]; int ny=y+dy[i];
        if(nx<0 or nx>=N or ny<0 or ny>=M or f[nx][ny]=='.' or vis[nx][ny]) continue;
        
        dfs(nx, ny);
    }
}
int main(){
    cin>>N>>M>>K;
    int answer=0;
    for(int i=0; i<N; i++){
        for(int j=0; j<M; j++){
            f[i][j]='.';
            vis[i][j]=false;
            
        }
    }
    while(K--){
        int x, y; cin>>x>>y;
        f[x-1][y-1]='#';
    }
    
    for(int i=0; i<N; i++){
        for(int j=0; j<M; j++){
            if(f[i][j]=='#' and !vis[i][j]){
                cnt=0;
                dfs(i, j);
                answer=max(cnt, answer);
            }
        }
    }
    
    cout<<answer<<"\n";
    return 0;
}

 

 

 

 ⭐ if feedback and question : comment please⭐  

 

 

 

 

 

 

반응형

댓글