괄호회전하기-알고리즘(Programmers)

김재민·2022년 7월 11일
0

문제


접근법

우선 Stack을 사용해서 문자열의 글자 한개씩 넣고 그 스택의 끝글자와 입력되는 글자가 한 쌍이면 Stack을 pop()시킬수 있도록 생각했다.
2중 for문으로 문자열 회전시키면서 0부터 인덱스를 찾아나가면 된다.
그리고 substring을 통해 문자를 회전시키면 된다.

그림 참고

내 코드

public static int solution(String s){
        int answer = 0;
        //Stack<Character> queue = new Stack<>();

            for(int i=0; i<s.length(); i++) {
                Stack<Character> queue = new Stack<>();
                //System.out.println("s : "+s);
                for (int j = 0; j < s.length(); j++) {
                    //System.out.println(s.charAt(j));
                    if (queue.size() != 0) {
                        if (queue.peek() == '[' && s.charAt(j) == ']') {
                            queue.pop();
                        } else if (queue.peek() == '(' && s.charAt(j) == ')') {
                            queue.pop();
                        } else if (queue.peek() == '{' && s.charAt(j) == '}') {
                            queue.pop();
                        } else {
                            queue.add(s.charAt(j));
                        }
                    } else if (queue.size() == 0) {
                        queue.add(s.charAt(j));

                    }
                    //System.out.println(queue);
                }
                if(queue.size()==0){
                    answer++;
                }
                char start = s.charAt(0);
                s = s.substring(1,s.length());
                s += start;

            }


        //System.out.println("answer : "+answer);

        return answer;
    }
profile
어제의 나보다 나은 오늘의 내가 되자!🧗‍♂️

0개의 댓글