From 2d0afa4adb2de053a6a19fb03abcfe8a05c3f006 Mon Sep 17 00:00:00 2001 From: Jinyeong Seol Date: Sat, 26 Jul 2025 23:55:18 +0900 Subject: [PATCH] =?UTF-8?q?[20250726]=20BOJ=20/=20G3=20/=20=EA=B4=84?= =?UTF-8?q?=ED=98=B8=20=EC=B6=94=EA=B0=80=ED=95=98=EA=B8=B0=20/=20?= =?UTF-8?q?=EC=84=A4=EC=A7=84=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...24\352\260\200\355\225\230\352\270\260.md" | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 "Seol-JY/202507/26 BOJ G3 \352\264\204\355\230\270 \354\266\224\352\260\200\355\225\230\352\270\260.md" diff --git "a/Seol-JY/202507/26 BOJ G3 \352\264\204\355\230\270 \354\266\224\352\260\200\355\225\230\352\270\260.md" "b/Seol-JY/202507/26 BOJ G3 \352\264\204\355\230\270 \354\266\224\352\260\200\355\225\230\352\270\260.md" new file mode 100644 index 00000000..3541d151 --- /dev/null +++ "b/Seol-JY/202507/26 BOJ G3 \352\264\204\355\230\270 \354\266\224\352\260\200\355\225\230\352\270\260.md" @@ -0,0 +1,55 @@ +```java +import java.io.*; +import java.util.*; + +public class Main { + static int N; + static String expression; + static int maxResult = Integer.MIN_VALUE; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + expression = br.readLine(); + + if (N == 1) { + System.out.println(expression.charAt(0) - '0'); + return; + } + + dfs(0, expression.charAt(0) - '0'); + System.out.println(maxResult); + } + + static void dfs(int idx, int currentValue) { + if (idx >= N - 1) { + maxResult = Math.max(maxResult, currentValue); + return; + } + + char operator = expression.charAt(idx + 1); + int nextNum = expression.charAt(idx + 2) - '0'; + + int nextValue = calculate(currentValue, operator, nextNum); + dfs(idx + 2, nextValue); + + if (idx + 4 < N) { + char nextOperator = expression.charAt(idx + 3); + int nextNextNum = expression.charAt(idx + 4) - '0'; + + int bracketResult = calculate(nextNum, nextOperator, nextNextNum); + int resultWithBracket = calculate(currentValue, operator, bracketResult); + dfs(idx + 4, resultWithBracket); + } + } + + static int calculate(int a, char operator, int b) { + switch (operator) { + case '+': return a + b; + case '-': return a - b; + case '*': return a * b; + default: return 0; + } + } +} +```