From e0992997b20d2821d6e2df34fa5128938c2b7caa Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Sun, 29 Jan 2023 23:35:37 +0900 Subject: [PATCH] =?UTF-8?q?uploaded=20at=202023.=201.=2029.=20=EC=98=A4?= =?UTF-8?q?=ED=9B=84=2011:35:37?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../[카카오 인턴] 수식 최대화/solution.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 programmers/[카카오 인턴] 수식 최대화/solution.java diff --git a/programmers/[카카오 인턴] 수식 최대화/solution.java b/programmers/[카카오 인턴] 수식 최대화/solution.java new file mode 100644 index 0000000..fb0ae8f --- /dev/null +++ b/programmers/[카카오 인턴] 수식 최대화/solution.java @@ -0,0 +1,79 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/67257 + +import java.util.*; +class Solution { + public long solution(String expression) { + long answer = 0; + int idx = 0; + int[][] arr = new int[6][3]; + char[] cArr = new char[] {'+','-','*'}; + for(int a = 0; a <= 2; a++){ + for(int b = 0; b <= 2; b++){ + if(b == a) continue; + for(int c = 0; c <= 2; c++){ + if(c == a || c == b) continue; + int[] nArr = new int[] {a,b,c}; + for(int d = 0; d <= 2; d++) arr[idx][d] = nArr[d]; + idx++; + } + } + } + ArrayList ob = new ArrayList<>(); + int n = 0; + for(int a = 0; a < expression.length(); a++){ + if(!Character.isDigit(expression.charAt(a))) { + ob.add(Long.parseLong(expression.substring(n,a))); + ob.add(expression.charAt(a)); + n = a+1; + } + } + if(expression.length()-1>=n) ob.add(Long.parseLong(expression.substring(n))); + for(int a = 0; a < 6; a++){ //a < 6 + ArrayList tob = ob; + for(int b = 0; b <= 2; b++){ + char p = cArr[arr[a][b]]; + ArrayList tob2 = new ArrayList<>(); + boolean occur = false, firstEncounter = true; + int over = 0; + for(int c = 0; c < tob.size(); c++){ + if(tob.get(c) instanceof Long) { + if(!occur) tob2.add(tob.get(c)); //continue; + else occur = false; + continue; + } + if((char)tob.get(c) == p){ + if(firstEncounter){ + Long temp = 0L; + firstEncounter = false; + over = b-1; + if(tob2.size()>0) tob2.remove(tob2.size()-1); + switch(p){ + case '*': temp = (Long)tob.get(c-1)*(Long)tob.get(c+1); + //System.out.println((Long)tob.get(c-1)+" * "+(Long)tob.get(c+1)); + break; + case '+': temp = (Long)tob.get(c-1)+(Long)tob.get(c+1); + //System.out.println((Long)tob.get(c-1)+" + "+(Long)tob.get(c+1)); + break; + case '-': temp = (Long)tob.get(c-1)-(Long)tob.get(c+1); + //System.out.println((Long)tob.get(c-1)+" - "+(Long)tob.get(c+1)); + break; + } + tob2.add(temp); + occur = true; + } else{ + tob2.add(tob.get(c)); + if(b != over) b = over; + } + } else tob2.add(tob.get(c)); + } + tob = tob2; + } + if(tob.size()>0){ + long temp = (Long)tob.get(0); + if(temp < 0) temp = 0-temp; + if(answer < temp) answer = temp; + } + } + return answer; + } +} \ No newline at end of file