본문 바로가기
Algorithm

20 : Valid Parentheses ( leetcode / java )

코동이 2020. 11. 3.

 

* 해결 방법

 

마찬가지로 괄호는 stack에 관한 문제입니다. 단, 이 문제에서는 괄호 모양이 3개가 있습니다. 이 괄호모양이 유효한지 확인해야 합니다. 정상적인 괄호라면, ')' '}' ']'가 나올 때 stack.peek()이 해당 괄호와 맞는 모양이어야 한다는 것입니다. 따라서 그것을 체크해주면서 하나씩 풀이하면, O(N)에 확인이 가능합니다.

 

 

import java.util.*;
class Solution {
    public boolean isValid(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.add(s.charAt(i));
           } else{
               if(stack.size()==0) return false;
               if(s.charAt(i)==')'){
                   if(stack.peek()=='(') stack.pop();
                   else return false;
               }
               
               else if(s.charAt(i)==']'){
                   if(stack.peek()=='[') stack.pop();
                   else return false;
               }
               
               else if(s.charAt(i)=='}'){
                   if(stack.peek()=='{') stack.pop();
                   else return false;
               }
           }
        }
        
        if(stack.size()==0) return true;
        else return false;
    }
}

 

 

반응형