๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์นด์นด์˜ค ํ”„๋ Œ์ฆˆ ์ปฌ๋Ÿฌ๋ง๋ถ( Level 2, 2017 ์นด์นด์˜ค ์ฝ”๋“œ ์˜ˆ์„ )

by dkswnkk 2021. 10. 23.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์นด์นด์˜คํ”„๋ Œ์ฆˆ ์ปฌ๋Ÿฌ๋ง๋ถ

6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5]

programmers.co.kr

 

์ฝ”๋“œ

#include <vector>
#include <queue>
using namespace std;
int cnt=0;
const int dx[4]={0,0,-1,1};
const int dy[4]={-1,1,0,0};
void bfs(int x,int y,int m,int n,vector<vector<int>> picture,int number_of_area,int visited[101][101]){
queue<pair<int,int>>q;
q.push({x,y});
visited[x][y]=1;
while(!q.empty()){
cnt++;
int x=q.front().first;
int y=q.front().second;
q.pop();
for(int i=0; i<4; i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=0&&nx<m&&ny>=0&&ny<n){
if(!visited[nx][ny]&&picture[nx][ny]==picture[x][y]){
visited[nx][ny]=1;
q.push({nx,ny});
}
}
}
}
}
// ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ๊ฒฝ์šฐ ํ•จ์ˆ˜ ๋‚ด์— ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ๊ผญ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
vector<int> solution(int m, int n, vector<vector<int>> picture) {
int number_of_area=0, max_size_of_one_area=0;
int visited[101][101]={0,};
for(int i=0; i<m; i++){
for(int k=0; k<n; k++){
if(!visited[i][k]&&picture[i][k]!=0){
number_of_area++;
bfs(i,k,m,n,picture,number_of_area,visited);
max_size_of_one_area=max(max_size_of_one_area,cnt);
cnt=0;
}
}
}
vector<int> answer(2);
answer[0] = number_of_area;
answer[1] = max_size_of_one_area;
return answer;
}

GitHub

LinkedIn

GitHub

LinkedIn