uploaded at 2023. 1. 29. 오후 11:35:37
This commit is contained in:
@@ -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<Object> 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<Object> tob = ob;
|
||||||
|
for(int b = 0; b <= 2; b++){
|
||||||
|
char p = cArr[arr[a][b]];
|
||||||
|
ArrayList<Object> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user