Java/Programmers

[Lv.2]괄호 회전하기

GLOWWW 2023. 2. 11. 18:12

package Lv_2;

import java.util.LinkedList;
import java.util.Stack;

public class lv2test {
    public static boolean chking(LinkedList<Character> queue) {
        Stack<String> stk = new Stack<>();
        if (queue.getFirst() == ']' || queue.getFirst() == '}' || queue.getFirst() == ')') {
            return false;
        } else if (queue.getLast() == '[' || queue.getLast() == '{' || queue.getLast() == '(') {
            return false;
        } else {
            for (int i = 0; i < queue.size(); i++) {
                if (queue.get(i) == '[') {
                    stk.add("[");
                } else if (queue.get(i) == '{') {
                    stk.add("{");
                } else if (queue.get(i) == '(') {
                    stk.add("(");
                } else if (queue.get(i) == ']') {
                    if (stk.isEmpty()) {
                        return false;
                    } else if (stk.peek() != "[") return false;
                    stk.pop();
                } else if (queue.get(i) == '}') {
                    if (stk.isEmpty()) {
                        return false;
                    }else if (stk.peek() != "{") {
                        return false;
                    }
                    stk.pop();
                } else if (queue.get(i) == ')') {
                    if (stk.isEmpty()) {
                        return false;
                    }else if (stk.peek() != "(") {
                        return false;
                    }
                    stk.pop();
                }
            }
        }
        if (!stk.isEmpty()) {
            return false;
        } else {
            return true;
        }
    }
    public static int solution(String s) {
        int answer = 0;
        if (s.length() % 2 == 1) {
            return 0;
        }
        LinkedList<Character> queue = new LinkedList<>();
        for (int i = 0; i < s.length(); i++) {
            queue.add(s.charAt(i));
        }
        for (int i = 0; i < s.length(); i++) {
            if (chking(queue)) {
                answer++;
            }
            char first = queue.getFirst();
            queue.poll();
            queue.add(first);
        }
        return answer;
    }


    public static void main(String[] args) {
        String s = "[](){}";
//        String s = "}]()[{";
        int result = solution(s);
        System.out.println(result);
    }
}

괄호를 회전하는것을 substring을 사용해서도 해 보았고, 큐를 이용해서도 해 볼 수 있었음.