From da7e7b461d88e03eab05ed6f4b4aaeef42059000 Mon Sep 17 00:00:00 2001 From: JHLEE325 <82587652+JHLEE325@users.noreply.github.com> Date: Sun, 5 Oct 2025 21:24:43 +0900 Subject: [PATCH] =?UTF-8?q?[20251005]=20BOJ=20/=20G5=20/=20=EB=82=B4?= =?UTF-8?q?=EB=A0=A4=EA=B0=80=EA=B8=B0=20/=20=EC=9D=B4=EC=A4=80=ED=9D=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...64\353\240\244\352\260\200\352\270\260.md" | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 "JHLEE325/202510/05 BOJ G5 \353\202\264\353\240\244\352\260\200\352\270\260.md" diff --git "a/JHLEE325/202510/05 BOJ G5 \353\202\264\353\240\244\352\260\200\352\270\260.md" "b/JHLEE325/202510/05 BOJ G5 \353\202\264\353\240\244\352\260\200\352\270\260.md" new file mode 100644 index 00000000..15f6c433 --- /dev/null +++ "b/JHLEE325/202510/05 BOJ G5 \353\202\264\353\240\244\352\260\200\352\270\260.md" @@ -0,0 +1,45 @@ +```java +import java.io.*; +import java.util.*; + +public class Main { + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + int n = Integer.parseInt(br.readLine()); + + int[][] map = new int[n][3]; + int[][] dpmax = new int[n][3]; + int[][] dpmin = new int[n][3]; + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < 3; j++) { + map[i][j] = Integer.parseInt(st.nextToken()); + if (i == 0) { + dpmax[i][j] = dpmin[i][j] = map[i][j]; + } + } + } + + for (int i = 1; i < n; i++) { + for (int j = 0; j < 3; j++) { + if (j == 0) { + dpmax[i][j] = Math.max(dpmax[i - 1][j], dpmax[i - 1][j + 1]) + map[i][j]; + dpmin[i][j] = Math.min(dpmin[i - 1][j], dpmin[i - 1][j + 1]) + map[i][j]; + } else if (j == 1) { + dpmax[i][j] = Math.max(Math.max(dpmax[i - 1][j], dpmax[i - 1][j + 1]), dpmax[i - 1][j - 1]) + map[i][j]; + dpmin[i][j] = Math.min(Math.min(dpmin[i - 1][j], dpmin[i - 1][j + 1]), dpmin[i - 1][j - 1]) + map[i][j]; + } else { + dpmax[i][j] = Math.max(dpmax[i - 1][j], dpmax[i - 1][j - 1]) + map[i][j]; + dpmin[i][j] = Math.min(dpmin[i - 1][j], dpmin[i - 1][j - 1]) + map[i][j]; + } + } + } + + System.out.println(Math.max(Math.max(dpmax[n - 1][0], dpmax[n - 1][1]), dpmax[n - 1][2]) + " " + Math.min(Math.min(dpmin[n - 1][0], dpmin[n - 1][1]), dpmin[n - 1][2])); + } +} +```