์ฐ์ ๋๋ make_safezone์ผ๋ก safe_zone ๋ฐฐ์ด์ ์นจ์๋๋์ง ์๋์ง๋ฅผ ์ ์ฅํด์ฃผ์๋ค.
rain_height๋ณด๋ค ๋์ด๊ฐ ๋์ผ๋ฉด 1, ๋ฎ๊ฑฐ๋ ๊ฐ์ผ๋ฉด 0์ผ๋ก ์์ญ์ด 1๋ก ๊ฐ์์ ์ผ๋ก ๋ณด์ด๊ฒ ๋ง๋ค์ด์ค
๊ทธ๋ฆฌ๊ณ ๋์ count_safezone ํด์ ๋ง๋ค์ด ๋ safezone์ ์์ญ ํฌ๊ธฐ๋ฅผ DFS๋ฅผ ํ์ฉํด ์ธ์ด์ฃผ์๋ค.
์ด ๊ณผ์ ์ rainheight 0๋ถํฐ 100๊น์ง ๋ฐ๋ณตํด ์ต๋๊ฐ์ ์ฐพ์์ฃผ๋ฉด ๋!
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int height[100][100] = {0,};
int safe_zone[100][100] = {0,};
int N = 0;
void make_safezone(int rain_height);
int count_safezone();
void DFS(int a, int b);
int main(){
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int rain_height = 0;
int i, j =0;
int m, n ;
int max_safezone = 0;
cin >> N;
for(i=0; i<N; i++){
for(j=0; j<N; j++){
cin >> height[i][j];
}
}
for(rain_height=0; rain_height<=100; rain_height++){
make_safezone(rain_height);
// cout << "\n safezone \n";
// for(n=0; n<N; n++){
// for(m=0;m<N;m++){
// cout<<safe_zone[n][m]<<" ";
// }
// cout <<"\n";
// }
int num_safezone = count_safezone();
if (max_safezone < num_safezone)
max_safezone = num_safezone;
}
cout << max_safezone;
}
void make_safezone(int rain_height){
int i, j = 0;
for(i=0; i<N; i++){
for(j=0; j<N; j++){
if(height[i][j] > rain_height)
safe_zone[i][j] = 1;
else
safe_zone[i][j] = 0;
}
}
}
int check[100][100] = {0,};
int count_safezone(){
int i, j=0;
int n,m;
int count = 0;
memset(check, 0, sizeof(check));
for(i = 0; i<N; i++){
for(j=0; j<N; j++){
if(safe_zone[i][j] && !check[i][j]){
DFS(i, j);
// cout << "\n DFS CHECK \n";
// for(n=0; n<N; n++){
// for(m=0;m<N;m++){
// cout<<check[n][m]<<" ";
// }
// cout <<"\n";
// }
count ++;
}
}
}
return count;
}
void DFS (int a, int b){
if(check[a][b]==1 || safe_zone[a][b] == 0){
return;
}
check[a][b] = 1;
if(b<N-1) DFS(a, b+1);
if(a<N-1) DFS(a+1, b);
if(a>0) DFS(a-1,b);
if(b>0) DFS(a,b-1);
}
๋์ ์ฒซ ๋ฒ์งธ ์ค์ - DFS if ๋ฌธ ์กฐ๊ฑด ์ค์
์ด๊ฑด ๊ฑ ๋ด๊ฐ ๋ฅ๋ฉ์ฒญ์ด ใ ใ
๋ ๋ฒ์งธ ์ค์ - ๋น๊ฐ ์ ์ฌ ์๋ ์๋ค๋ ์ฌ์ค์ ์บ์นํ์ง ๋ชปํ์๋ค
๋น๊ฐ ์์ฌ์๋ ์์ด์ rain_height์ ์์์ด 0์ด์์ด์ผ ํ๋๋ฐ, 1๋ถํฐ ํด์ ํ์ฐธ ํด๋งด ใ ใ
๋คํํ ์ธํฐ๋ท์ ๋ฐ๋ก ์ฐพ์ผ๋๊น ๋ ์ ๊ณ ์ณค๋ค
๊ณ ๋๊ณผ ์ญ๊ฒฝ..
'๐ก๐ธ๐ธ๐ถ๐ฃ: ๐๐๐๐๐๐พ๐๐ฝ๐ > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ9095 : 1, 2, 3 ๋ํ๊ธฐ (Silver 3) (2) | 2023.02.24 |
---|---|
BOJ3184 : ์ (Silver 1) (0) | 2023.02.05 |
BOJ5671 : ํธํ ๋ฐฉ ๋ฒํธ (Silver 5) (0) | 2021.08.20 |
BOJ14889 : ์คํํธ์ ๋งํฌ (Silver 3) (0) | 2021.08.20 |
BOJ 2503 : ์ซ์์ผ๊ตฌ (Silver 5) (0) | 2021.08.20 |