From 07b27c255ef48e549aa970f4327596538664d87d Mon Sep 17 00:00:00 2001 From: oncsr Date: Tue, 4 Nov 2025 23:52:38 +0900 Subject: [PATCH] =?UTF-8?q?[20251104]=20BOJ=20/=20G4=20/=20=ED=86=A0?= =?UTF-8?q?=EB=81=BC=EA=B0=80=20=EC=A0=95=EB=B3=B4=EC=84=AC=EC=97=90=20?= =?UTF-8?q?=EC=98=AC=EB=9D=BC=EC=98=A8=20=EC=9D=B4=EC=9C=A0=20/=20?= =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=A4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\354\230\250 \354\235\264\354\234\240.md" | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 "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" 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; + +} +```