- toc {:toc}
λ¬Έμ
μ¬λλ°©μ¬μ²μμλ λ§μ λΉκ° λ΄λ¦¬λ μ₯λ§μ² μ λλΉν΄μ λ€μκ³Ό κ°μ μΌμ κ³ννκ³ μλ€. λ¨Όμ μ΄λ€ μ§μμ λμ΄ μ 보λ₯Ό νμ νλ€. κ·Έ λ€μμ κ·Έ μ§μμ λ§μ λΉκ° λ΄λ Έμ λ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ΄ μ΅λλ‘ λͺ κ°κ° λ§λ€μ΄ μ§λ μ§λ₯Ό μ‘°μ¬νλ €κ³ νλ€. μ΄λ, λ¬Έμ λ₯Ό κ°λ¨νκ² νκΈ° μνμ¬, μ₯λ§μ² μ λ΄λ¦¬λ λΉμ μμ λ°λΌ μΌμ ν λμ΄ μ΄νμ λͺ¨λ μ§μ μ λ¬Όμ μ κΈ΄λ€κ³ κ°μ νλ€.
μ΄λ€ μ§μμ λμ΄ μ 보λ νκ³Ό μ΄μ ν¬κΈ°κ° κ°κ° NμΈ 2μ°¨μ λ°°μ΄ ννλ‘ μ£Όμ΄μ§λ©° λ°°μ΄μ κ° μμλ ν΄λΉ μ§μ μ λμ΄λ₯Ό νμνλ μμ°μμ΄λ€. μλ₯Ό λ€μ΄, λ€μμ N=5μΈ μ§μμ λμ΄ μ 보μ΄λ€.
| 6 | 8 | 2 | 6 | 2 |
| 3 | 2 | 3 | 4 | 6 |
| 6 | 7 | 3 | 3 | 2 |
| 7 | 2 | 5 | 3 | 6 |
| 8 | 9 | 5 | 2 | 7 |
μ΄μ μμ κ°μ μ§μμ λ§μ λΉκ° λ΄λ €μ λμ΄κ° 4 μ΄νμΈ λͺ¨λ μ§μ μ΄ λ¬Όμ μ κ²Όλ€κ³ νμ. μ΄ κ²½μ°μ λ¬Όμ μ κΈ°λ μ§μ μ νμμΌλ‘ νμνλ©΄ λ€μκ³Ό κ°λ€.Β
| 6 | 8 | 2 | 6 | 2 |
| 3 | 2 | 3 | 4 | 6 |
| 6 | 7 | 3 | 3 | 2 |
| 7 | 2 | 5 | 3 | 6 |
| 8 | 9 | 5 | 2 | 7 |
λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ΄λΌ ν¨μ λ¬Όμ μ κΈ°μ§ μλ μ§μ λ€μ΄ μ, μλ, μ€λ₯Έμͺ½ νΉμ μΌμͺ½μΌλ‘ μΈμ ν΄ μμΌλ©° κ·Έ ν¬κΈ°κ° μ΅λμΈ μμμ λ§νλ€. μμ κ²½μ°μμ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ 5κ°κ° λλ€(κΌμ§μ μΌλ‘λ§ λΆμ΄ μλ λ μ§μ μ μΈμ νμ§ μλλ€κ³ μ·¨κΈνλ€).Β
λν μμ κ°μ μ§μμμ λμ΄κ° 6μ΄νμΈ μ§μ μ λͺ¨λ μ κΈ°κ² λ§λλ λ§μ λΉκ° λ΄λ¦¬λ©΄ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ μλ κ·Έλ¦Όμμμ κ°μ΄ λ€ κ°κ° λ¨μ νμΈν μ μλ€.Β
| 6 | 8 | 2 | 6 | 2 |
| 3 | 2 | 3 | 4 | 6 |
| 6 | 7 | 3 | 3 | 2 |
| 7 | 2 | 5 | 3 | 6 |
| 8 | 9 | 5 | 2 | 7 |
μ΄μ κ°μ΄ μ₯λ§μ² μ λ΄λ¦¬λ λΉμ μμ λ°λΌμ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ κ°μλ λ€λ₯΄κ² λλ€. μμ μμ κ°μ μ§μμμ λ΄λ¦¬λ λΉμ μμ λ°λ₯Έ λͺ¨λ κ²½μ°λ₯Ό λ€ μ‘°μ¬ν΄ 보면 λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ κ°μ μ€μμ μ΅λμΈ κ²½μ°λ 5μμ μ μ μλ€.Β
μ΄λ€ μ§μμ λμ΄ μ λ³΄κ° μ£Όμ΄μ‘μ λ, μ₯λ§μ² μ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ μ΅λ κ°μλ₯Ό κ³μ°νλ νλ‘κ·Έλ¨μ μμ±νμμ€.Β μ λ ₯
첫째 μ€μλ μ΄λ€ μ§μμ λνλ΄λ 2μ°¨μ λ°°μ΄μ νκ³Ό μ΄μ κ°μλ₯Ό λνλ΄λ μ Nμ΄ μ λ ₯λλ€. Nμ 2 μ΄μ 100 μ΄νμ μ μμ΄λ€. λμ§Έ μ€λΆν° Nκ°μ κ° μ€μλ 2μ°¨μ λ°°μ΄μ 첫 λ²μ§Έ νλΆν° Nλ²μ§Έ νκΉμ§ μμλλ‘ ν νμ© λμ΄ μ λ³΄κ° μ λ ₯λλ€. κ° μ€μλ κ° νμ 첫 λ²μ§Έ μ΄λΆν° Nλ²μ§Έ μ΄κΉμ§ Nκ°μ λμ΄ μ 보λ₯Ό λνλ΄λ μμ°μκ° λΉ μΉΈμ μ¬μ΄μ λκ³ μ λ ₯λλ€. λμ΄λ 1μ΄μ 100 μ΄νμ μ μμ΄λ€. μΆλ ₯
첫째 μ€μ μ₯λ§μ² μ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ μ΅λ κ°μλ₯Ό μΆλ ₯νλ€.
μΆμ²: https://www.acmicpc.net/problem/2468
νμ΄
ν¨μλ‘ λ§λ€μ§ μμλ λμ§λ§ μ°μ΅μΌμ ν λ² λ§λ€μ΄λ΄€λ€.
- 쑰건μ μ£ΌμνκΈ°
- area μ μ₯νλ λ°©μ μ¬μ©
ν¬κ² μ΄λ ΅μ§ μκ² ν μ μλ€.
#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
int board[103][103];
int n;
int MAX = 0, MIN = 9999, ans = 0;
int dx[4] = {0, -1, 0, 1};
int dy[4] = {-1, 0, 1, 0};
queue<pair<int, int>> q;
int BFS(int n, int wHeight){
int vis[103][103] = {};
int area = 0;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(board[i][j] <= wHeight || vis[i][j] == 1) continue;
q.push({i, j});
vis[i][j] = 1;
area++;
while(!q.empty()){
auto cur = q.front(); q.pop();
for(int dir = 0; dir < 4; dir++){
int nx = cur.X + dx[dir];
int ny = cur.Y + dy[dir];
if(nx < 0 || nx >= n || ny < 0 || ny >= n) continue;
if(board[nx][ny] <= wHeight || vis[nx][ny] == 1) continue;
q.push({nx, ny});
vis[nx][ny] = 1;
}
}
}
}
return area;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
vector<int> water;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cin >> board[i][j];
if(board[i][j] > MAX) MAX = board[i][j];
if(board[i][j] < MIN) MIN = board[i][j];
}
}
/*
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cout << board[i][j] << '\t';
}
cout << endl;
}
*/
for(int wHeight=0; wHeight<MAX; wHeight++){
water.push_back(BFS(n, wHeight));
}
for(auto elem : water){
ans = max(ans, elem);
}
cout << ans << endl;
}