import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
char [] arr = {'[','{','(',')','}',']'};
int [] iarr = new int [6];
List list0 = new ArrayList();
for(int i= 0 ; i < s.length();i++) {
for(int j= 0 ; j< arr.length;j++) {
if(s.charAt(i) == arr[j]) {
iarr[j]++;
}
}
}
for(int i= 0; i <iarr.length;i++) {
if ( iarr[i] == 0 ) {
return answer;
}
}
List<String> list = new ArrayList();
list.add(s);
for(int i= 0; i <s.length()-1;i++) {
char c = s.charAt(0);
s = s.replaceFirst("\\"+c,"");
s += c;
list.add(s);
}
for(int i = 0 ; i<list.size();i++) {
int cnt = 0;
String sr = list.get(i);
for(int j = 0 ; j<s.length();j++) {
if(sr.charAt(j) == '[' || sr.charAt(j) == '{' ||sr.charAt(j) == '(' ) {
cnt++;
} else {
cnt--;
}
if(cnt < 0 ) {
break;
}
}
if( cnt == 0 ) {
answer++;
}
}
return answer;
}
}
(1) 첫 번째로 매개변수 문자열 s의 {'[','{','(',')','}',']'}; 각각 하나씩은 들어가있는지 체크해줬다. 만약 없는 문자가 있다면 절대 유효한 괄호가 될 수 없기 때문에 바론 0을 리턴
(2) 위 과정을 통과했다면 각 자리의 문자를 카운트하여 만약 유효할 수 없는 cnt 값이 나온다면 건너뛰고 cnt == 0 으로 각 자리의 문자의 결합이 맞다면 answer 값을 증가
전에 1Lv 괄호 문제에서 조금 심화된 것 같다. 지금 푼 정도 조건만 기억하면 괄호 문제는 잘 풀 수 있을듯!