728x90
문제
https://www.acmicpc.net/problem/9012
괄호가 알맞게 짝지어 졌는지를 알아내는 문제다.
자료구조 Stack을 사용해서 '('면 stack에 담고 ')'면 stack에서 빼는 방법으로 괄호가 올바르게 짝지어 졌는지 판별한다.
코드
using System;
using System.Text;
using System.Collections.Generic;
namespace baekjoon
{
class Algorithm
{
static void Main(string[] str)
{
Stack<Char> stack = new Stack<Char>(); // stack
int cnt = int.Parse(Console.ReadLine()); // 몇 줄의 괄호가 들어오는지?
for (int i = 0; i < cnt; i++)
{
Char[] chars = Console.ReadLine().ToCharArray(); // 괄호를 Char 배열로 만듦
foreach (char c in chars)
{
if(c == '(') // '('면 stack에 담기
{
stack.Push(c);
}
else if(c == ')' && stack.Count > 0)
{
stack.Pop();
}
else if(c == ')' && stack.Count == 0)
{
stack.Push(c);
break;
}
}
if(stack.Count <= 0) // stack에 아무것도 없으면?
{
Console.WriteLine("YES");
}
else
{
Console.WriteLine("NO");
}
stack.Clear();
}
}
}
}
회고
보자마자 stack이 생각났지만 조건문을 진짜 더럽게 써서 고생했다. "stack에 하나라도 남아있으면 NO"라고 적어보니 그제서야 아... 하면서 타닥타닥.. 적었다. 내 뇌는 언제쯤 발전할까
'동식이 취업시키기 작전 > 코딩테스트' 카테고리의 다른 글
[백준] 10845 큐(c#) (1) | 2024.01.22 |
---|---|
[백준] 카드2 2164(c#) (1) | 2024.01.22 |
[백준] 제로 10773(c#) (0) | 2024.01.22 |
[백준] 스택 10828(c#) (1) | 2024.01.21 |
[백준] 으로 코딩테스트 대비하기(feat. 애인) (1) | 2024.01.21 |