Probelm:-
Given a string S of '(' and ')' parentheses, we add the minimum number of parentheses ( '(' or ')', and in any positions ) so that the resulting parentheses string is valid.
Formally, a parentheses string is valid if and only if:
- It is the empty string, or
- It can be written as
AB(Aconcatenated withB), whereAandBare valid strings, or - It can be written as
(A), whereAis a valid string.
Given a parentheses string, return the minimum number of parentheses we must add to make the resulting string valid.
Time Limit: 5
Memory Limit: 256
Source Limit:
Explanation
The given string can be balanced to "((()))(())", requiring 4 more paranthesis minimum.
Solution:-
#include<stdio.h>
# define max 10000
char stack[max];
int top=-1;
void push()
{
top++;
stack[top]='(';
}
int main()
{
char str[100000];
int sum=0;
scanf("%s",str);
for(int i=0;str[i];i++)
{
if(str[i]=='(')
push();
else
{
if(top==-1)
sum++;
else
top--;
}
}
sum=sum+top+1;
printf("%d",sum);
return 0;
}
