본문 바로가기
Algorithm/LeetCode

[Java] 20. Valid Parentheses

by tabasco 2023. 6. 7.

문제 설명 :

한 마디로 괄호가 정상적으로 열고 닫혀있는지 확인하는 문제이다.

 

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack();

        boolean result = false;

        if(s.length() == 1) return false;

        for(int i=0; i<s.length(); i++){    

            switch(s.charAt(i)){
                case '(','{','[':
                    stack.push(s.charAt(i));
                    result = false;
                    break;
                case ')':
                    if(stack.empty()) return false;
                    if(stack.peek() == '('){
                        stack.pop();
                        result = true;
                    }else{
                        return false;
                    }
                    break;
                case '}':
                    if(stack.empty()) return false;
                    if(stack.peek() == '{'){
                        stack.pop();
                        result = true;
                    }else{
                        return false;
                    }
                    break;
                case ']':
                    if(stack.empty()) return false;
                    if(stack.peek() == '['){
                        stack.pop();
                        result = true;
                    }else{
                        return false;
                    }
                    break;
            }
            
        }

        return result && stack.empty();
    }
}

 

해설 :

- 전에 프로그래머스에서도 한 번 풀어봤던 문제인데, Stack으로 풀었던게 기억나서 동일하게 Stack으로 접근해보았다.

- 여는 괄호의 경우 Stack에 Push해주고, 닫는 괄호의 경우 peek으로 자신과 짝이 맞는 괄호가 Stack에 저장되어 있는지 확인한다.

- 이 과정에서 닫는괄호만 있거나, 마지막에 열린 괄호만 존재하는 케이스가 있어 empty()를 활용해 처리해주었다.

'Algorithm > LeetCode' 카테고리의 다른 글

[Java] 26. Remove Duplicates from Sorted Array  (1) 2023.06.07
[Java] 21. Merge Two Sorted Lists  (0) 2023.06.07
[Java] 14. Longest Common Prefix  (0) 2023.06.07
[Java] 13. Roman to Integer  (0) 2023.06.07
[Java] 9. Palindrome Number  (0) 2023.06.07