728x90
url : https://www.acmicpc.net/problem/2468
오랜만에 다시 푼 dfs 문제!
코드
#include <bits/stdc++.h>
using namespace std;
int n, temp, maxH, answer;
int mp[104][104], visited[104][104];
int dy[]={-1,0,1,0};
int dx[]={0,1,0,-1};
void dfs(int y, int x, int h){
visited[y][x]=1;
for(int i=0;i<4;i++){
int ny = y + dy[i];
int nx = x + dx[i];
if (ny<0||nx<0||ny>=n||nx>=n) continue;
if (visited[ny][nx]) continue;
if (mp[ny][nx]>h){
dfs(ny, nx, h);
}
}
}
int main(void) {
// 1. 입력받기
cin >> n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin >> temp;
mp[i][j] = temp;
maxH = max(maxH, temp);
}
}
//2. dfs 수행
for (int h=0;h<=maxH;h++){
int ret=0;
fill(&visited[0][0], &visited[0][0]+104*104, 0);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if (mp[i][j]>h && visited[i][j]==0){
dfs(i, j, h);
ret++;
}
}
}
answer = max(answer, ret);
}
//3. 정답 출력
cout << answer;
}
728x90
'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
[백준] 1766: 문제집 (1) | 2023.12.21 |
---|---|
[백준] 2252 : 줄 세우기, 위상 정렬 (2) | 2023.12.20 |
[프로그래머스] 160585: 혼자서 하는 틱택토 (0) | 2023.12.18 |
[프로그래머스] 숫자 변환하기 (0) | 2023.12.17 |
[프로그래머스] 43165 : 타겟 넘버 (0) | 2023.12.15 |