문제
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
괄호가 알맞게 짝지어 졌는지를 알아내는 문제다.
자료구조 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 |
문제
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
괄호가 알맞게 짝지어 졌는지를 알아내는 문제다.
자료구조 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 |