• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

질문이있습니다!!

23.05.18 07:40 작성 조회수 308

0

안녕하세요 선생님 좋은 수업 제공해 주셔서 감사드리다는 말씀 드립니다.

제가 작성한 코드에 문제를 못찾겠어서 질문을 드립니다.

저는 stack에 문자를 쌓고 나중에 pop을 통해 빼서 '('이 나오면 cnt++를하고 아니면 빼기를 통해 마지막에 0이 나오면 yes no를 나오게 하여 작성하였습니다. 그런데 계속 no만 나와 그 이유를 알고자 합니다. 답변 부탁드립니다.

답변 2

·

답변을 작성해보세요.

0

여기 있습니다 선생님

int main()
{
	stack<char> s;
	char a[50];
	cin >> a;
	int flag = 1;
	for (int i = 0; a[i] != '\0'; i++)
	{
		if (a[i] == '(')
		{
			s.push(a[i]);
		}
		else
		{
			if (s.empty())
			{
				cout << "NO";
				flag = 0;
				break;
			}
			else
			{
				s.pop();
			}
		}
	}
	if (s.empty() && flag == 1)
	{
		cout << "yes";
	}
	else if (!s.empty() && flag == 1)
	{
		cout << "no";
	}
	return 0;
}

저는 100점이 나오는 코드로 보입니다. "YES"와 "NO"와 같이 대문자로 출력하면 100점 나올겁니다.

0

안녕하세요^^

코드를 보면 정상적인 괄호는 yes라고 나올 코드로 보이는데요.

하지만 ")(" 이런 입력의 괄호도 yes로 나올것 같습니다.

no만 나온다는 코드를 풀코드로 텍스트 형태로 올려주세요. 제가 한 번 디버그해보겠습니다.