[C#] 올바른 괄호

Connected Brain·2025년 7월 14일

코딩 테스트

목록 보기
33/67

올바른 괄호

문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때,
문자열 s가 올바른 괄호이면 truereturn 하고,
올바르지 않은 괄호이면 falsereturn 하는 solution 함수를 완성해 주세요.

풀이

public class BalancedParentheses
{
    public static bool Solution(string s)
    {
        int parenthesesOpenCount = 0;
        bool isOpen = false;
        
        const char open = '(';
        const char close = ')';

        foreach (char c in s)
        {
            if (c == open)
            {
                parenthesesOpenCount++;
                isOpen = true;
            }
            else if (c == close && isOpen)
            {
                parenthesesOpenCount--;
                
                if(parenthesesOpenCount == 0)
                    isOpen = false;
            }
            else if (c == close && !isOpen)
                return false;
                
        }
        
        return parenthesesOpenCount == 0;
    }
}
  • parenthesesOpenCount 현재 열린 괄호의 개수를 확인
  • isOpen 괄호에 들어간 상태인지 확인
const char open = '(';
const char close = ')';
  • 괄호의 열고 닫힘을 확인하는 문자를 명시
  • 이후 조건에 따라서 해당 문자열이 올바른 괄호인지 확인
    1. 해당 문자가 (일 때 : 열린 괄호 개수를 추가하고 isOpentrue로 변경
    2. 해당 문자가 )이면서 괄호에 들어간 상태일 경우 : 열린 괄호의 개수를 하나 줄임
      (하나의 괄호 세트가 완성된 것이므로) + 만약 열린 괄호의 개수가 더이상 없다면 모든 괄호가 닫힌 상태이므로 isOpenfalse로 변경
    3. 해당 문자가 )이면서 열린 괄호가 없는 경우 : 올바르지 못한 경우이므로 즉시 false를 반환

0개의 댓글