알고리즘/프로그래머스

괄호 회전하기

베리영young 2024. 12. 16. 13:56

사용 알고리즘: 스택

사용 언어: java

 

 

import java.util.*;

class Solution {
    int answer = 0;
    
    public int solution(String s) {
        List<Character> ss = init(s);
        for(int i=0; i<ss.size(); i++) {
            ss.add(ss.remove(0));
            
            if(makeSentence(ss)) 
                answer++;
        }
        
        return answer;
    }
    
    public boolean makeSentence(List<Character> ss) {
        Stack<Character> stk = new Stack<>();
        for(int i=0; i<ss.size(); i++) {
            char cur = ss.get(i);
            if(cur==']') {
                if(!stk.isEmpty() && stk.peek()=='[') {
                    stk.pop();
                    continue;
                }
                return false;
            }
            if(cur=='}') {
                if(!stk.isEmpty() && stk.peek()=='{') {
                    stk.pop();
                    continue;
                }
                return false;
            }
            if(cur==')') {
                if(!stk.isEmpty() && stk.peek()=='(') {
                    stk.pop();
                    continue;
                }
                return false;
            }
            
            stk.push(cur);
        }
        
        if(stk.isEmpty()) return true;
        return false;
    }
    
    public List<Character> init(String s) {
        List<Character> ss = new ArrayList<>();
        for(int i=0; i<s.length(); i++) {
            ss.add(s.charAt(i));
        }
        return ss;
    } 
}

 

 

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

뒤에 있는 큰 수 찾기  (0) 2025.01.28
이중우선순위큐  (0) 2024.12.18
신규 아이디 추천  (0) 2024.12.13
이진 변환 반복하기  (0) 2024.12.13
정수 삼각형  (0) 2024.12.12