[프로그래머스] Level2 괄호 회전하기 (Java)

MINSANG YU·2022년 9월 5일
0

프로그래머스

목록 보기
5/15
post-thumbnail

문제링크

핵심

괄호 판별하는 문제는 스택을 사용하면 편하다.

import java.util.*;

class Solution {
    
    static boolean check(String s) {
        Stack<Character> stack = new Stack<>();
        
        for(int i=0; i<s.length(); i++) {
            char cur = s.charAt(i);
            
            if(cur=='(')  stack.push('(');
            else if (cur == '{') stack.push('{');
            else if (cur == '[') stack.push('[');            
            
            else if (cur==')') {
                if(stack.isEmpty() || stack.peek()!='(') return false;
                else stack.pop();
            }
            else if (cur=='}') {
               if(stack.isEmpty() || stack.peek()!='{') return false;
                else stack.pop();
            }
            else if (cur==']') {
                if(stack.isEmpty() || stack.peek()!='[') return false;
                else stack.pop();
            }
        }
        
        if(stack.isEmpty()) return true;
        else return false;
        
    }
    
    public int solution(String s) {
        int answer = 0;
        
        for(int i=0; i<s.length(); i++) {
            String cur = s.substring(i,s.length())+s.substring(0,i);
            if(check(cur)) answer++;
        }
        
        return answer;
    }
}

스택을 활용하지 않고 괄호의 개수를 사용해서 풀어보려고 했으나 ({[[}]]) 같은 경우 결국 가장 최근에 사용된 열린 괄호의 정보가 필요했기 때문에 편하게 스택을 활용했다.

profile
쉿! 공부중

0개의 댓글