[프로그래머스] 올바른 괄호

박지예·2023년 8월 18일
0

코딩테스트

목록 보기
2/17

문제

첫번째 풀이

  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;

   }
}

결국 인덱스를 +/- 하여 값을 계산하였다.
스택을 사용한 알고리즘을 최적화 하지 못해서 아쉽지만 그래도 다른 테스트 케이스는 통과하였으니 그걸로 만족하려 한다.

profile
언젠간 바다로 갈거야!🐋

0개의 댓글