C# 4949번 균형잡힌 세상
2022. 2. 15. 22:50ㆍ코딩테스트 문제 풀이/[백준] 스택
728x90
반응형
코드 :
using System;
using System.Collections;
using System.Text;
namespace _4
{
class Program
{
//균형잡힌 괄호
static public void balanced(Stack stack, int j, string PS)
{
//괄호문양이 아닐시에는 stack을 쌓지 않는다.
if (PS[j] == '(' || PS[j] == ')' || PS[j] == '[' || PS[j] == ']')
{
//맨 초기값
if (stack.Count == 0)
stack.Push(PS[j]);
else
{
// '()' OR '[]' 모양이 만들어질때마다 pop시켜서
//stack이 올바른 괄호 문자열이라면 모두 pop될것이고
//아니라면 몇개가 남을것이다.
if ((stack.Peek().ToString() == "(" && PS[j] == ')') || (stack.Peek().ToString() == "[" && PS[j] == ']'))
{
stack.Pop();
}
else
stack.Push(PS[j]);
}
}
}
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
while(true)
{
//입력받기
string PS = Console.ReadLine();
//break조건
if (PS == ".")
break;
Stack stack = new Stack();
for (int j = 0; j < PS.Length; j++)
{
balanced(stack, j, PS);
}
//stack의 길이가 0일때만 YES
sb.AppendLine(stack.Count == 0 ? "yes" : "no");
}
Console.WriteLine(sb);
}
}
}
풀이 설명 :
괄호가 () 혹은 [] 모양으로 완성되어야 한다. 괄호가 '(' 혹은 '[' 모양일때는 계속 스택에 쌓고 괄호가 ')' 혹은 ']' 일때는 스택의 가장 맨위와 해당 괄호의 모양이 잘 맞아 떨어지면 Pop한다.
이런식으로 스택을 모두 비우면 균형잡힌 세상이므로 yes를 출력하고 아니면 no를 출력한다.
728x90
반응형
'코딩테스트 문제 풀이 > [백준] 스택' 카테고리의 다른 글
C# 17298번 오큰수 (0) | 2022.02.15 |
---|---|
C# 1874번 스택 수열 (0) | 2022.02.15 |
C# 9012번 괄호 (0) | 2022.02.09 |
C# 10773번 제로 (0) | 2022.02.09 |
C# 10828번 스택 (0) | 2022.02.09 |