์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- ๋ถํ ์ ๋ณต
- web
- ๋์ ํฉ
- ๊ตฌํ
- thymeleaf
- Reversing
- ์ฐ์ ์์ ํ
- ๋งต
- ์คํ
- BFS
- CVE
- error
- Spring
- dfs
- ๊ทธ๋ฆฌ๋
- ์๋ฎฌ๋ ์ด์
- OS
- java
- ๋ฐฑํธ๋ํน
- ๋ฌธ์์ด
- DP
- ์์ ์ ๋ ฌ
- ์ฌ๊ท
- c++
- ๋ฐ์ดํฌ์คํธ๋ผ
- ์ด๋ถ ํ์
- dynamic debugging
- GCP
- ์ต๋จ ๊ฒฝ๋ก
- JPA
- Today
- Total
hades
[Baekjoon] 1926๋ฒ: ๊ทธ๋ฆผ ๋ณธ๋ฌธ
๐ฅ ๋ฌธ์
https://www.acmicpc.net/problem/1926
๐ ์ค๊ณ
1๋ก ์ด๋ฃจ์ด์ง ์์ญ์ ๊ฐ์์ ๋์ด๋ฅผ ๊ณ์ฐํด์ผ ํ๋ค. 1๋ก ๊ตฌ์ฑ๋ ์ด๋ค ์นธ์์ ๊ฐ๋ก์ธ๋ก์ ์ธ์ ํ 1์ ๊ณ์ํด์ ์ถ๊ฐํ์ฌ ํ๋์ ์์ญ์ ๊ตฌ์ฑํด์ผ ํ๋ฏ๋ก, BFS๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
๋ํ์ง๋ฅผ ๊ตฌ์ฑํ๋ ์นธ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ํ ์นธ์ฉ ๋ฐ๋ณต๋ฌธ์ ํตํด ์ํํ๋ฉด์, 1์ด๋ผ๋ฉด ๊ทธ ์นธ์ ํ ๊ทธ๋ฆผ์ ์ด๋ฃจ๋ ์์์ ์ผ๋ก ํ์ฌ ํ ๊ทธ๋ฆผ์ ๋์ด๋ฅผ ๋ฐํํ๋ bfs ํจ์๋ฅผ ์คํํ๋ค.
๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ ์ฅํ๋ visited ๋ฐฐ์ด์ ๋ง๋ค ์๋ ์์ผ๋, ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ด๊ธฐ ์ํด 1์ด์๋ ์นธ์ ๋ฐฉ๋ฌธํ์์ผ๋ฉด 0์ผ๋ก ๋ฐ๊พธ๋ ๋ฐฉ์์ผ๋ก ์์ฑํ์๋ค.
๐ ํ์ด
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int n, m, max_area = 0, number_of_painting = 0;
int dx[] = {-1,1,0,0};
int dy[] = {0,0,-1,1};
vector<vector<int>> paper(500, vector<int>(500));
int bfs(int start_x, int start_y){
int cur_area = 1;
queue<pair<int, int>> q;
paper[start_x][start_y] = 0;
q.push({start_x, start_y});
while (!q.empty()){
int cur_x = q.front().first;
int cur_y = q.front().second;
q.pop();
for (int i=0; i<4; i++){
int new_x = cur_x + dx[i];
int new_y = cur_y + dy[i];
if (!(new_x >= 0 && new_x < n && new_y >= 0 && new_y < m)){
continue;
}
if (paper[new_x][new_y] == 1){
cur_area += 1;
paper[new_x][new_y] = 0;
q.push({new_x, new_y});
}
}
}
return cur_area;
}
int main() {
cin >> n >> m;
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
cin >> paper[i][j];
}
}
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
if (paper[i][j]==1){
max_area = max(max_area, bfs(i, j));
number_of_painting += 1;
}
}
}
cout << number_of_painting << "\n" << max_area << "\n";
return 0;
}
๋ํ์ง๋ฅผ ๊ตฌ์ฑํ๋ ์นธ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ํ ์นธ์ฉ ๋ฐ๋ณต๋ฌธ์ ํตํด ์ํํ๋ฉด์, 1์ด๋ผ๋ฉด ๊ทธ ์นธ์ ํ ๊ทธ๋ฆผ์ ์ด๋ฃจ๋ ์์์ ์ผ๋ก ํ์ฌ ํ ๊ทธ๋ฆผ์ ๋์ด๋ฅผ ๋ฐํํ๋ bfs ํจ์๋ฅผ ์คํํ๋ค. ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ ์ฅํ๋ visited ๋ฐฐ์ด์ ๋ง๋ค ์๋ ์์ผ๋, ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ด๊ธฐ ์ํด 1์ด์๋ ์นธ์ ๋ฐฉ๋ฌธํ์์ผ๋ฉด 0์ผ๋ก ๋ฐ๊พธ๋ ๋ฐฉ์์ผ๋ก ์์ฑํ์๋ค.
๐ ๋ฉ๋ชจ
bfs ํจ์์์ ์๋ก์ด ์นธ์ ๋ฒ์๋ฅผ ๋ฐ๋์ ํ์ธํด์ผ ํ๋ค.
'๐ PS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1012๋ฒ: ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2024.07.02 |
---|---|
[Baekjoon] 1003๋ฒ: ํผ๋ณด๋์น ํฉ (0) | 2024.07.02 |
[Baekjoon] 1920๋ฒ: ์ ์ฐพ๊ธฐ (0) | 2024.07.01 |
[Baekjoon] 1463๋ฒ: 1๋ก ๋ง๋ค๊ธฐ (0) | 2024.07.01 |
[Baekjoon] 11047๋ฒ: ๋์ 0 (0) | 2024.07.01 |