본문으로 바로가기

Description

소괄호, 중괄호, 대괄호가 유효하게 열리고 닫혀있는지 검증하여 반환하는 문제입니다.

Solution 1. Stack

public static String isBalanced(String s) {
    // Write your code here
    Stack<Character> stack = new Stack<>();

    for(char c : s.toCharArray()) {
        switch (c) {
            case '(':
                stack.push(')');
                break;
            case '{':
                stack.push('}');
                break;
            case '[':
                stack.push(']');
                break;
            default:
                if (stack.isEmpty() || c != stack.pop()) return "NO";
                break;
        }
    }
    return stack.isEmpty() ? "YES" : "NO";
}

스택을 이용하여 열린괄호가 들어 왔을 경우 그에 맞는 닫는 괄호를 스택에 넣어줍니다. 괄호가 중첩될경우 가장 먼저 열린 괄호가 가장 마지막에 닫혀야 합니다. 괄호를 닫아야 하는 시점에 스택이 비어있거나 유효하지 않은 괄호가 있을 경우 실패를 반환하고 모든 경우를 통과 했고 스택이 비어 있으면 성공을 반환해줍니다.

Reference

 

Balanced Brackets | HackerRank

Given a string containing three types of brackets, determine if it is balanced.

www.hackerrank.com