diff --git "a/khj20006/202511/04 BOJ G4 \355\206\240\353\201\274\352\260\200 \354\240\225\353\263\264\354\204\254\354\227\220 \354\230\254\353\235\274\354\230\250 \354\235\264\354\234\240.md" "b/khj20006/202511/04 BOJ G4 \355\206\240\353\201\274\352\260\200 \354\240\225\353\263\264\354\204\254\354\227\220 \354\230\254\353\235\274\354\230\250 \354\235\264\354\234\240.md" new file mode 100644 index 00000000..3b1d4b54 --- /dev/null +++ "b/khj20006/202511/04 BOJ G4 \355\206\240\353\201\274\352\260\200 \354\240\225\353\263\264\354\204\254\354\227\220 \354\230\254\353\235\274\354\230\250 \354\235\264\354\234\240.md" @@ -0,0 +1,37 @@ +```cpp +#include +using namespace std; + +int N, M; +char arr[1000][1000]{}; +int dp[1000][1000]{}; + +int main() { + cin.tie(0)->sync_with_stdio(0); + + cin >> N >> M; + int x = 0, y = 0; + for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) { + cin >> arr[i][j]; + if (arr[i][j] == 'R') x = i, y = j; + } + for (int i = 0; i < N; i++) for (int j = 0; j <= y; j++) dp[i][j] = -1; + dp[x][y] = 0; + for (int j = y + 1; j < M; j++) for (int i = 0; i < N; i++) { + if (arr[i][j] == '#') { + dp[i][j] = -1; + continue; + } + dp[i][j] = -1; + int c = arr[i][j] == 'C' ? 1 : 0; + if (dp[i][j - 1] != -1) dp[i][j] = dp[i][j - 1] + c; + if (i > 0 && dp[i - 1][j - 1] != -1) dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + c); + if (i < N - 1 && dp[i + 1][j - 1] != -1) dp[i][j] = max(dp[i][j], dp[i + 1][j - 1] + c); + } + + int ans = -1; + 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]); + cout << ans; + +} +```