제출 코드
- 사용 알고리즘 :
자료구조
처음엔 어떻게 해야할지 감이 안와서 헤맸는데, 단순하게 나올 수 있는 모든 문자열에 대해 온전한 괄호 짝인지 확인해주면 되는 문제였다.
좌측 괄호가 하나만 들어있는 경우 등 대비하지 못한 엣지케이스가 있어 조금 시간이 걸렸다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.*;
class Solution {
public int solution(String s) {
Queue<String> queue = new LinkedList<String>();
int len = s.length();
for(int i=0; i<len; i++){
String str = s.substring(i, len) + s.substring(0, i);
queue.add(str);
}
int cnt=0, size=s.length();
while(!queue.isEmpty()){
String str = queue.poll();
Stack<Character> stack = new Stack<Character>();
for(int i=0; i<size; i++){
char now = str.charAt(i);
if(now=='[' || now=='(' || now=='{') {
stack.push(now);
}else if(stack.isEmpty()){
stack.push(now);
break;
}else{
char tmp = stack.pop();
if((now==']'&&tmp=='[') || (now==')'&&tmp=='(') || (now=='}' && tmp=='{') ){
continue;
}else{
stack.push(now);
break;
}
}
}
if(stack.isEmpty()) cnt++;
}
return cnt;
}
}