본문 바로가기
프로그래머스

프로그래머스 lv2 - 괄호 회전하기 (자바)

by dragonDeok 2024. 7. 1.
728x90

문제


프로그래머스 lv2 - 괄호 회전하기

풀이


  • 스택 사용
  • 한 칸씩 왼쪽으로 이동시키기
    • 탐색 시작 위치를 한 칸씩 오른쪽으로 이동
    • 해당 위치 인덱스를 문자열 전체 길이로 나머지 연산 수행해서 범위를 넘어가는 위치 인덱스 처리
  • 괄호 짝이 맞다면 스택에서 pop()
  • 괄호 짝이 맞지 않다면 스택에 push()
  • 전체 문자를 탐색 후 스택이 비어있다면 answer 증가

코드


import java.util.*;
class Solution {
    public int solution(String s) {
        int answer = 0;
        char[] arr = s.toCharArray();
        int len = arr.length;

        for (int k = 0; k < len; k++) {
            Stack<Character> st = new Stack<>();
            for (int i = k; i < k + len; i++) {
                Character c = arr[i % len];
                if (!st.isEmpty()) {
                    if (st.peek() == '[' && c == ']')
                        st.pop();
                    else if (st.peek() == '(' && c == ')')
                        st.pop();
                    else if (st.peek() == '{' && c == '}')
                        st.pop();
                    else
                        st.push(c);
                } else {
                    st.push(c);
                }
            }
            if (st.isEmpty())
                answer++;
        }

        return answer;
    }
}