C#

백준 C# 4949 문제 풀이

psb08 2024. 12. 17. 14:27
728x90

문제 링크 : https://www.acmicpc.net/problem/4949

목차

1. 설명

 

2. 내 코드

 

3. 문제 풀이 해석 내용

 

4. 실행 결과

 

설명

백준 실버 4 문제 입니다.

문제명 : 균형잡힌 세상

 

내 코드

while (true)
        {
            string input = Console.ReadLine();
            if (input == ".") break; // 입력 종료 조건

            Stack<char> stack = new Stack<char>();
            bool isBalanced = true;

            foreach (char c in input)
            {
                if (c == '(' || c == '[')
                {
                    stack.Push(c); // 여는 괄호를 스택에 추가
                }
                else if (c == ')')
                {
                    if (stack.Count == 0 || stack.Pop() != '(')
                    {
                        isBalanced = false; // 짝이 맞지 않으면 불균형
                        break;
                    }
                }
                else if (c == ']')
                {
                    if (stack.Count == 0 || stack.Pop() != '[')
                    {
                        isBalanced = false; // 짝이 맞지 않으면 불균형
                        break;
                    }
                }
            }

            // 스택이 비어있다면 모든 괄호가 짝을 이룸
            if (isBalanced && stack.Count == 0)
            {
                Console.WriteLine("yes");
            }
            else
            {
                Console.WriteLine("no");
            }
        }

 

문제 풀이 해석 내용

 

입력처리

while (true)
{
    string input = Console.ReadLine();
    if (input == ".") break; // 입력 종료 조건

 

 

스택 초기화

Stack<char> stack = new Stack<char>();
bool isBalanced = true;

 

 

괄호 처리

foreach (char c in input)
{
    if (c == '(' || c == '[')
    {
        stack.Push(c); // 여는 괄호를 스택에 추가
    }
    else if (c == ')')
    {
        if (stack.Count == 0 || stack.Pop() != '(')
        {
            isBalanced = false; // 짝이 맞지 않으면 불균형
            break;
        }
    }
    else if (c == ']')
    {
        if (stack.Count == 0 || stack.Pop() != '[')
        {
            isBalanced = false; // 짝이 맞지 않으면 불균형
            break;
        }
    }
}

 

 

결과 출력

if (isBalanced && stack.Count == 0)
{
    Console.WriteLine("yes");
}
else
{
    Console.WriteLine("no");
}

 

 

 

실행 결과

실행 결과

 

728x90

'C#' 카테고리의 다른 글

백준 C# 10816 문제 풀이  (0) 2024.12.19
백준 C# 10773 문제 풀이  (0) 2024.12.18
백준 C# 2164 문제 풀이  (0) 2024.12.16
백준 C# 7568 문제 풀이  (0) 2024.12.14
백준 C# 1436 문제 풀이  (0) 2024.12.13