본문 바로가기
Algorithm/프로그래머스풀이

[알고리즘 문제풀이] 프로그래머스 - 괄호 회전하기 / JAVA(자바)

by 계범 2022. 2. 18.

https://programmers.co.kr/learn/courses/30/lessons/76502

 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr

/**
    1. s의 길이만큼 회전
    1-1) stringBuilder 사용
    
    2. 회전시 해당 문자열이 올바른 괄호 문자열인지 체크
    2-1) stack 사용
**/

import java.util.*;

class Solution {
    public int solution(String s) {
        int answer = 0;
        StringBuilder sb = new StringBuilder(s);
        for(int i = 0; i < s.length(); i++){
            if(check(sb.toString())) answer++;
            sb.append(sb.charAt(0));
            sb.deleteCharAt(0);
        }
        return answer;
    }
    
    public boolean check(String s){
        Stack<Character> stack = new Stack<>();
        
        for(int i = 0; i< s.length(); i++){
            
            if(s.charAt(i) == '[' || s.charAt(i) == '{' || s.charAt(i) == '('){
                stack.push(s.charAt(i));
            }else{
                
                if(stack.isEmpty()){
                    return false;
                }
                char c = stack.peek();
                if(c == '[' && s.charAt(i) == ']'){
                    stack.pop();
                }else if(c == '{' && s.charAt(i) == '}'){
                    stack.pop();
                }else if(c == '(' && s.charAt(i) == ')'){
                    stack.pop();
                }else{
                    return false;
                }
            }
        }
        
        return stack.isEmpty();
    }
}

댓글