BOJ 2468. μμ μμ
πββοΈ[Silver I] μμ μμ - 2468
μ±λ₯ μμ½
λ©λͺ¨λ¦¬: 2204 KB, μκ°: 124 ms
λΆλ₯
λλΉ μ°μ νμ, λΈλ£¨νΈν¬μ€ μκ³ λ¦¬μ¦, κΉμ΄ μ°μ νμ, κ·Έλν μ΄λ‘ , κ·Έλν νμ
μ μΆ μΌμ
2024λ 3μ 29μΌ 15:53:17
λ¬Έμ μ€λͺ
μ¬λλ°©μ¬μ²μμλ λ§μ λΉκ° λ΄λ¦¬λ μ₯λ§μ² μ λλΉν΄μ λ€μκ³Ό κ°μ μΌμ κ³ννκ³ μλ€. λ¨Όμ μ΄λ€ μ§μμ λμ΄ μ 보λ₯Ό νμ νλ€. κ·Έ λ€μμ κ·Έ μ§μμ λ§μ λΉκ° λ΄λ Έμ λ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ΄ μ΅λλ‘ λͺ κ°κ° λ§λ€μ΄ μ§λ μ§λ₯Ό μ‘°μ¬νλ €κ³ νλ€. μ΄λ, λ¬Έμ λ₯Ό κ°λ¨νκ² νκΈ° μνμ¬, μ₯λ§μ² μ λ΄λ¦¬λ λΉμ μμ λ°λΌ μΌμ ν λμ΄ μ΄νμ λͺ¨λ μ§μ μ λ¬Όμ μ κΈ΄λ€κ³ κ°μ νλ€.
μ΄λ€ μ§μμ λμ΄ μ 보λ νκ³Ό μ΄μ ν¬κΈ°κ° κ°κ° 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 μ΄νμ μ μμ΄λ€.
μΆλ ₯
첫째 μ€μ μ₯λ§μ² μ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ μ΅λ κ°μλ₯Ό μΆλ ₯νλ€.
πνμ΄
bfsλ‘ ν΄κ²°ν λ¬Έμ μ΄λ€.
μ΅μ λμ΄ - 1 λΆν° μ΅λ λμ΄κΉμ§ μννλ©΄μ λͺ¨λ ꡬμμ bfs λμλ€.
λΉμ·ν λ¬Έμ λ₯Ό νμ΄λ΄μ κΈλ°© νμλ€!
πμ½λ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <queue>
#include <climits>
using namespace std;
int dy[] = { -1, 0, 1, 0 };
int dx[] = { 0, 1, 0, -1 };
int n, cnt = 0;
vector<vector<int>> board;
int visited[110][110];
void BFS(int y, int x, int height)
{
queue<pair<int, int>> q;
if (visited[y][x] == true || board[y][x] <= height)
return;
q.push({ y, x });
visited[y][x] = true;
cnt++;
pair<int, int> here;
while (q.empty() == false)
{
here = q.front();
q.pop();
for (int i = 0; i < 4; ++i)
{
int ny = here.first + dy[i];
int nx = here.second + dx[i];
if (ny < 1 || nx < 1 || ny > n || nx > n)
continue;
if (visited[ny][nx] == true)
continue;
if (board[ny][nx] <= height)
continue;
q.push({ ny, nx });
visited[ny][nx] = true;
}
}
}
void solve()
{
cin >> n;
board = vector<vector<int>>(n + 1, vector<int>(n + 1));
int min_num = INT_MAX, max_num = 0;
for (int y = 1; y <= n; ++y)
{
for (int x = 1; x <= n; ++x)
{
cin >> board[y][x];
min_num = min(min_num, board[y][x]);
max_num = max(max_num, board[y][x]);
}
}
int ans = 0;
for (int height = min_num - 1; height < max_num; ++height)
{
for (int y = 1; y <= n; ++y)
{
for (int x = 1; x <= n; ++x)
{
if (board[y][x] > height)
BFS(y, x, height);
}
}
ans = max(ans, cnt);
cnt = 0;
::memset(&visited, 0, sizeof(visited));
}
cout << ans;
}
int main()
{
FILE* stream;
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
freopen_s(&stream, "input.txt", "rt", stdin);
solve();
return 0;
}