문제 풀이
(의 개수와 )의 개수를 세면서 점수처럼 (일 때 +1, )일 때 -1을 합니다. 이 때 최종값이 0이면 YES입니다.
단, ())와 같이 음수가 되는 경우 for문을 멈추고 NO를 출력합니다.
YES NO 판단은 배열 마지막 자리일 때 수행합니다.
소스코드
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
int T;
scanf("%d",&T);
for(int i = 0; i<T; i++)
{
char arr[51];
int cnt=0;
scanf("%s", arr);
for (int i=0; i<strlen(arr); i++)
{
if (arr[i]=='(')
cnt++;
else if (arr[i]==')')
cnt--;
if (cnt<0)
{
printf("NO\n");
break;
}
if (i==(strlen(arr)-1))
{
if (cnt==0)
printf("YES\n");
else
printf("NO\n");
}
}
}
return 0;
}
'C C++ > C C++ 백준' 카테고리의 다른 글
[C/C++] 백준 15651번 N과 M (3) (0) | 2022.10.09 |
---|---|
[C/C++] 로또의 최고 순위와 최저 순위 (Lv1) (0) | 2022.07.10 |
C언어 백준 11004번 K번째 수 (0) | 2022.07.10 |
C언어 백준 10989번 수 정렬하기 3 (0) | 2022.07.02 |
C언어 백준 10825번 국영수 (0) | 2022.06.26 |
댓글