[프로그래머스] 괄호 회전하기 JAVA

AMUD·2023년 6월 14일
0

Algorithm

목록 보기
62/78

문제


문제링크

접근

  • 기본적으로 스택을 이용한 괄호 유효성 검사 알고리즘이 필요하다.
  • 괄호 회전 처리는 인덱스의 증감으로 처리하여 순회하며 개수를 센다.

풀이

import java.util.*;

class Solution {
    int len;
    char[] ss;
    Deque<Character> stack = new ArrayDeque<>();
    public int solution(String s) {
        int answer = 0;
        ss = s.toCharArray();
        len = s.length();
        
        for (int i = 0; i < len; i++)
            if (isRight(i)) answer++;
        
        return answer;
    }
    
    private boolean isRight(int startIdx) {
        for (int i = 0; i < len; i++) {
            char c = ss[(i + startIdx) % len];
            
            if (c == '[' || c == '{' || c == '(') {
                stack.push(c);
                continue;
            }
            
            if (stack.isEmpty()) return false;
            if (stack.peek() == getOpp(c)) stack.pop();
            else return false;   
        }
        
        if (stack.size() == 0) return true;
        return false;
    }
    
    private char getOpp(char c) {
        if (c == ']') return '[';
        if (c == '}') return '{';
        return '(';
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글