Home P76502. 괄호 회전하기
Post
Cancel

P76502. 괄호 회전하기

문제

image

제출 코드

  • 사용 알고리즘 : 자료구조

처음엔 어떻게 해야할지 감이 안와서 헤맸는데, 단순하게 나올 수 있는 모든 문자열에 대해 온전한 괄호 짝인지 확인해주면 되는 문제였다.

좌측 괄호가 하나만 들어있는 경우 등 대비하지 못한 엣지케이스가 있어 조금 시간이 걸렸다.

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;
    }
}
This post is licensed under CC BY 4.0 by the author.