728x90
🔍 아이디어
✅ _!(, {, [!_ 가 확인되면 스택에 담고, 닫는 부호가 확인되면 스택에서 꺼내 비교한다.
✅ 비교결과 짝이 맞지 않거나, 순회를 종료한 시점에 스택 내 남은 괄호가 있다면 _!false!_ 처리
import java.util.*;
class Solution {
Map<Character, Character> map = new HashMap<>();
public int solution(String s) {
int answer = 0;
map.put(']', '[');
map.put('}', '{');
map.put(')', '(');
StringBuilder sb = new StringBuilder(s);
if (check(sb.toString())) {
answer++;
}
for (int i = 0; i < sb.length() - 1; i++) {
String pick = sb.substring(0, 1);
sb.deleteCharAt(0);
sb.append(pick);
// System.out.println(sb);
if (check(sb.toString())) {
answer++;
}
}
return answer;
}
boolean check(String str) {
boolean valid = true;
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
switch (c) {
case '[':
case '{':
case '(':
stack.push(c);
break;
case ']':
case '}':
case ')':
if (stack.size() <= 0 || map.get(c) != stack.pop()) {
valid = false;
}
break;
}
}
if (stack.size() > 0) {
valid = false;
}
return valid;
}
}