본문 바로가기

코딩테스트/문제

20. Valid Parentheses

난이도 쉬움

 

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.
'(', ')', '{', '}', '[' 및 ']' 문자만 포함하는 문자열 s가 주어지면 입력 문자열이 유효한지 확인합니다.

다음과 같은 경우 입력 문자열이 유효합니다.

열린 브래킷은 동일한 유형의 브래킷으로 닫아야 합니다.
열린 브래킷은 올바른 순서로 닫아야 합니다.

Example 1:

Input: s = "()"
Output: true

Example 2:

Input: s = "()[]{}"
Output: true

Example 3:

Input: s = "(]"
Output: false

답안지

import java.util.*;
class Solution {
    public boolean isValid(String s) {
        if(s.length()%2 != 0) return false;
        Stack<Character> stack = new Stack<Character>();
        for(int i =0; i<s.length(); i++) {
            if(s.charAt(0) == ')' || s.charAt(0) == '}' || s.charAt(0) == ']'){
                return false;
            }
            switch(s.charAt(i)) {
                
                case ')':
                    if(stack.empty()) return false;
                    if(stack.peek() == '(') stack.pop();
                    else return false;
                    break;
                case '}':
                    if(stack.empty()) return false;
                    if(stack.peek() == '{') stack.pop();
                    else return false;
                    break;
                case ']':
                    if(stack.empty()) return false;
                    if(stack.peek() == '[') stack.pop();
                    else return false;
                    break;
             
                default :
                    stack.push(s.charAt(i));
                    break;
            }
        }
        return stack.empty();
    }
}

example만 보고 풀어보다가 하도 안풀려서 인터넷에 돌아다니는 답안지에 예외처리만 좀 보탰다.

-_-.....

문제해결답안을 보면 아! 하지만 그건 내것이 아니라고했다.(ㅠㅠ...)

이 문제는 스택에 대한 공부가 안돼있다면 접근을 못할거라 생각한다.

내일은 스택에 대해 복습과 큐에 대해서도 복습을 진행해보자.

'코딩테스트 > 문제' 카테고리의 다른 글

9. Palindrome Number  (0) 2022.05.24