public bool solution(string s)
{
bool answer = true;
Stack<char> stack = new Stack<char>();
foreach(char c in s)
{
if (c == ')')
{
if (stack.Count <= 0) return false;
if(stack.Peek() == '(')
{
stack.Pop();
continue;
}
}
stack.Push(c);
}
answer = stack.Count > 0 ? false : true;
return answer;
}
문제 카테고리가 스택/큐
여서 스택을 이용하여 풀었다.
그러나 효율성 테스트 마지막 하나를 실패하였다.
public class Solution {
public bool solution(string s)
{
int balance = 0; // 괄호의 균형을 유지하기 위한 변수
foreach (char c in s)
{
if (c == '(')
{
balance++;
}
else if (c == ')')
{
if (balance <= 0) return false;
balance--;
}
}
return balance == 0;
}
}
결국 인덱스를 +/- 하여 값을 계산하였다.
스택을 사용한 알고리즘을 최적화 하지 못해서 아쉽지만 그래도 다른 테스트 케이스는 통과하였으니 그걸로 만족하려 한다.