๋์ด๋ : ๊ณจ๋ 5
๊ฑธ๋ฆฐ ์๊ฐ : 30๋ถ
๋ฌธ์
๋ณด๋ฌผ์ฌ ์ง๋๋ฅผ ๋ฐ๊ฒฌํ ํํฌ ์ ์ฅ์ ๋ณด๋ฌผ์ ์ฐพ์๋์ฐ๋ค. ๋ณด๋ฌผ์ฌ ์ง๋๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ง์ฌ๊ฐํ ๋ชจ์์ด๋ฉฐ ์ฌ๋ฌ ์นธ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ๊ฐ ์นธ์ ์ก์ง(L)๋ ๋ฐ๋ค(W)๋ก ํ์๋์ด ์๋ค. ์ด ์ง๋์์ ์ด๋์ ์ํ์ข์ฐ๋ก ์ด์ํ ์ก์ง๋ก๋ง ๊ฐ๋ฅํ๋ฉฐ, ํ ์นธ ์ด๋ํ๋๋ฐ ํ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. ๋ณด๋ฌผ์ ์๋ก ๊ฐ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ํ๋๋ฐ ์์ด ๊ฐ์ฅ ๊ธด ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ก์ง ๋ ๊ณณ์ ๋๋์ด ๋ฌปํ์๋ค. ์ก์ง๋ฅผ ๋ํ๋ด๋ ๋ ๊ณณ ์ฌ์ด๋ฅผ ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ํ๋ ค๋ฉด ๊ฐ์ ๊ณณ์ ๋ ๋ฒ ์ด์ ์ง๋๊ฐ๊ฑฐ๋, ๋ฉ๋ฆฌ ๋์๊ฐ์๋ ์ ๋๋ค.
์๋ฅผ ๋ค์ด ์์ ๊ฐ์ด ์ง๋๊ฐ ์ฃผ์ด์ก๋ค๋ฉด ๋ณด๋ฌผ์ ์๋ ํ์๋ ๋ ๊ณณ์ ๋ฌปํ ์๊ฒ ๋๊ณ , ์ด ๋ ์ฌ์ด์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ํ๋ ์๊ฐ์ 8์๊ฐ์ด ๋๋ค.
๋ณด๋ฌผ ์ง๋๊ฐ ์ฃผ์ด์ง ๋, ๋ณด๋ฌผ์ด ๋ฌปํ ์๋ ๋ ๊ณณ ๊ฐ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ํ๋ ์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
ํ์ด
- ๊ฐ์ฅ ๋จผ ๊ณณ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด์ผ ํ๋ค.
- ๋ชจ๋ ์ => ๋ชจ๋ ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด์ผ ํ๋ค.
- ํ๋ก์ด๋ ์์ฌ
- ๋ค์ต์คํธ๋ผ V๋ฒ
- bfs V๋ฒ => ๊ฐ์ค์น๊ฐ ์๊ณ E๊ฐ ์ต๋ 4๊ฐ ์ด๋ฏ๋ก bfs๋ฅผ ์ฌ์ฉํ๋ค.
์ฝ๋
#include <iostream>
#include <string>
#include <queue>
#include <cstring>
using namespace std;
char map[51][51];
int direction[4][2] = { {0,1}, {1,0}, {0,-1}, {-1, 0} };
vector<pair<int,int>> LSpot;
int visited[51][51]; // visited๋ ๋งค๋ฒ ์ด๊ธฐํํด์ ์ฐ๋ฉฐ ์ต๋จ๊ฑฐ๋ฆฌ ์ต๋๊ฐ๋ง ์ ์ฅ
int result = -1;
int main() {
// ์
๋ ฅ
int L, W; cin >> L >> W;
for (int i = 0; i < L; i++) { // map์ ์ ์ฅ
string s; cin >> s;
for (int j = 0; j < W; j++) {
map[i][j] = s[j];
if (map[i][j] == 'L')
LSpot.push_back(make_pair(i, j));
}
}
for (int i = 0; i < LSpot.size(); i++) {
fill(&visited[0][0], &visited[50][50], -1); // -1๋ก ์ด๊ธฐํ
queue<pair<int, int>> que;
auto spot = LSpot[i];
que.push(make_pair(spot.first, spot.second));
visited[spot.first][spot.second] = 0;
while (!que.empty()) {
spot = que.front(); que.pop();
int r = spot.first; int c = spot.second;
int path = visited[spot.first][spot.second] + 1;
for (int i = 0; i < 4; i++) {
int rp = r + direction[i][0];
int cp = c + direction[i][1];
if (rp < 0 || cp < 0 || rp >= L || cp >= W) // ๋งต ๋ฐ์ ์์น
continue;
if (visited[rp][cp] != -1) {
continue;
}
if (map[rp][cp] == 'L') {
visited[rp][cp] = path;
if (path > result)
result = path;
que.push(make_pair(rp, cp));
}
}
}
}
cout << result;
}
๊ฒฐ๊ณผ
์์ด๋ | ๋ฉ๋ชจ๋ฆฌ | ์๊ฐ | ์ธ์ด | ์ฝ๋ ๊ธธ์ด |
---|---|---|---|---|
gmldms784 | 2032 | 116 | C++17 / ์์ | 1634 |
'Algorithm ๋ฌธ์ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] BOJ 9019 :: DSLR (0) | 2021.05.26 |
---|---|
[c++] BOJ 2146 :: ๋ค๋ฆฌ ๋ง๋ค๊ธฐ (0) | 2021.05.18 |
[c++] BOJ 1707 :: ์ด๋ถ ๊ทธ๋ํ (0) | 2021.05.12 |
[c++] BOJ 2206 :: ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (0) | 2021.05.11 |
[c++] BOJ 16236 :: ์๊ธฐ ์์ด (0) | 2021.05.03 |
Comment