본문 바로가기
알고리즘/백준 BOJ

[ BOJ/C# ] 9012 괄호

by 왹져박사 2023. 10. 1.
728x90

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

단순히 괄호의 수만 확인하는 것이 아니라, 한 쌍의 괄호가 아니게 되는 조건을 찾아 NO를 출력해야 했다. 

using System;
using System.Text;

namespace B9012
{
    class Program
    {
        static int IsVPS(string str)
        {
            Stack<char> stack = new Stack<char>();
            int r = 0;
            for (int j = 0; j < str.Length; j++) stack.Push(str[j]);
            for (int j = 0; j < str.Length; j++)
            {
                char c = stack.Pop();
                if (c == ')') r++;
                else
                {
                    r--;
                    if (r < 0)
                    {
                        r--;
                        break;
                    }
                }
            }
            stack.Clear();
            return r;
        }
        static void Main()
        {
            StreamReader sr = new StreamReader(Console.OpenStandardInput());
            StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
            StringBuilder sb = new StringBuilder();
            int t = int.Parse(sr.ReadLine());
            for (int i = 0; i < t; i++)
            {
                int r = IsVPS(sr.ReadLine());
                if (r == 0) sb.Append("YES\n");
                else
                {
                    sb.Append("NO\n");
                    r = 0;
                }
            }
            sw.Write(sb);
            sr.Close();
            sw.Flush();
            sw.Close();
        }
    }
}

등수가 꽤나 앞에 있으면 너무 재밌고 뿌듯하고..그렇다

2등부터 시간이 같지만, 메모리와 코드 길이의 차이로 등수가 갈렸다. 어떤 부분이 다른지 배워야겠다!

728x90