Skip to content

Commit 07b27c2

Browse files
authored
[20251104] BOJ / G4 / 토끼가 정보섬에 올라온 이유 / 권혁준
1 parent 0635e63 commit 07b27c2

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
```cpp
2+
#include <bits/stdc++.h>
3+
using namespace std;
4+
5+
int N, M;
6+
char arr[1000][1000]{};
7+
int dp[1000][1000]{};
8+
9+
int main() {
10+
cin.tie(0)->sync_with_stdio(0);
11+
12+
cin >> N >> M;
13+
int x = 0, y = 0;
14+
for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) {
15+
cin >> arr[i][j];
16+
if (arr[i][j] == 'R') x = i, y = j;
17+
}
18+
for (int i = 0; i < N; i++) for (int j = 0; j <= y; j++) dp[i][j] = -1;
19+
dp[x][y] = 0;
20+
for (int j = y + 1; j < M; j++) for (int i = 0; i < N; i++) {
21+
if (arr[i][j] == '#') {
22+
dp[i][j] = -1;
23+
continue;
24+
}
25+
dp[i][j] = -1;
26+
int c = arr[i][j] == 'C' ? 1 : 0;
27+
if (dp[i][j - 1] != -1) dp[i][j] = dp[i][j - 1] + c;
28+
if (i > 0 && dp[i - 1][j - 1] != -1) dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + c);
29+
if (i < N - 1 && dp[i + 1][j - 1] != -1) dp[i][j] = max(dp[i][j], dp[i + 1][j - 1] + c);
30+
}
31+
32+
int ans = -1;
33+
for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) if (arr[i][j] == 'O') ans = max(ans, dp[i][j]);
34+
cout << ans;
35+
36+
}
37+
```

0 commit comments

Comments
 (0)