ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Leetcode] Valid Parentheses
    개인 공부/알고리즘 2021. 4. 25. 23:20

    Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

    An input string is valid if:

    1. Open brackets must be closed by the same type of brackets.
    2. Open brackets must be closed in the correct order.

    import java.util.Stack;
    import java.util.Scanner;
    
    public class Solution {
        public boolean isValid(String s) {
            Stack stack = new Stack();
            char ch, open_ch;
    
            for (int i = 0; i < s.length(); i++) {
                ch = s.charAt(i);
                switch (ch) {
                case '(':
                case '{':
                case '[':
                    stack.push(ch);
                    break;
                case ')':
                case '}':
                case ']':
                    if (stack.isEmpty())
                        return false;
                    open_ch = (char) stack.pop();
                    if ((open_ch == '(' && ch != ')') || (open_ch == '[' && ch != ']') || (open_ch == '{' && ch != '}')) {
                        return false;
                    }
                    break;
                }
            }
    
            if (!stack.isEmpty())
                return false;
            return true;
        }
    }

    괄호 순서가 알맞은지 검사하는 문제이다. 자료구조 시간에 배웠던 문제라 어렵진 않았는데 C언어로 스택까지 이걸 어떻게 구현하지 싶어서 멘붕... 이렇게 알고리즘 문제 풀어보는 게 처음이라서 이런 문제가 있을 줄은 생각지도 못했다. 파이썬은 문법이 가물가물하고 개인적으로 잘 안 맞아서 일단 패스하고 그나마 조금 익숙한 자바에 스택 관련 클래스가 있길래 그냥 자바로 구현했다. 그런데 사실 자바도 이제 막 배우는 중이라 문법도 헷갈리고.... 너무 슬프다 엉엉. 다른 사람들은 클래스 이것저것 아주 옴팡지게 잘 사용해서 풀던데... 내 자신이 너무 초라하게 느껴진다. ㅠㅠ 일단은... 파이팅이다. 계속 하다보면 익숙해지겠지 뭐..

     

     

    * 관련해서 알아야 할 자바 개념들

    1. stack 클래스

    2. 맵(Map) -> 딕셔너리와 유사. 이거 쓰면 switch로 일일이 괄호 값 검사하지 않아도 된다.

    3. charAt()

    '개인 공부 > 알고리즘' 카테고리의 다른 글

    스레드 이진 트리 (Threaded Binary Tree)  (0) 2021.10.10
    [GeekforGeeks] Key Pair  (0) 2021.05.30
    [LeetCode] Climbing Stairs  (0) 2021.05.18
    [LeetCode] Flip Equivalent Binary Trees  (0) 2021.05.16
    [LeetCode] Valid Anagram  (0) 2021.05.08

    댓글

Designed by Tistory.