https://www.acmicpc.net/problem/1926
1926번: 그림
어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로
www.acmicpc.net
[난이도] Silver1
[유형] DFS
[풀이]
dfs 기본문제 입니다.
#include <cstdio> #include <algorithm> using namespace std; int n,m,a[501][501],dy[4]={-1,1,0,0},dx[4]={0,0,1,-1},cnt,ans; int dfs(int y,int x){ a[y][x]=2; int ret=1; for(int i=0;i<4;i++){ int ny=y+dy[i], nx=x+dx[i]; if(ny<0||nx<0||ny>=n||nx>=m||a[ny][nx]!=1) continue; ret+=dfs(ny,nx); } return ret; } int main(){ scanf("%d%d",&n,&m); for(int i=0;i<n;i++) for(int j=0;j<m;j++) scanf("%d",&a[i][j]); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(a[i][j]==1){ cnt++; ans = max(ans,dfs(i,j)); } } } printf("%d\n%d",cnt,ans); }
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver1/1926.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Silver1] 1850 : 최대공약수 (C++) (0) | 2022.09.26 |
---|---|
[BOJ/백준][Silver1] 2504 : 괄호의 값 (C++) (0) | 2022.09.26 |
[BOJ/백준][Gold5] 21608 : 상어 초등학교 (C++) (0) | 2022.09.26 |
[BOJ/백준][Gold3] 2406 : 안정적인 네트워크 (C++) (0) | 2022.08.22 |
[BOJ/백준][Gold3] 18234 : 당근 훔쳐 먹기 (C++) (0) | 2022.08.22 |