728x90
https://www.acmicpc.net/problem/9012
소스코드 & 문제풀이
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main() {
int T, len; //테스트 개수 T, 문자길이 수 len 변수 선언합니다
scanf("%d", &T); //테스트 개수를 입력받습니다
char st[51]; //문자열의 길이는 2이상 50이하 이므로 배열을 51 설정해줍니다
int left = 0, right = 0; //left: '('의 개수, right: ')'의 개수를 초기화합니다
//입력받은 테스트 수만큼 반복합니다
for (int t = 0; t < T; t++) {
scanf("%s", st); //배열을 통해 '('나 ')'를 입력 저장합니다
len = strlen(st); //입력받은만큼 반복하기 위해 문자길이 수를 출력합니다
//문자길이의 수만큼 반복문을 돌며
for (int i = 0; i < len; i++) {
if (st[i] == '(') //배열을 돌며 '('와 비교하고 일치하면
left++; //'('의 개수를 세는 left를 증가시키고
else if (st[i] == ')') right++; //')'와 비교하여 일치하면 right를 증가시켜줍니다
if (right > left) //닫힌 괄호가 더 많으면 해당 반복문을 탈출합니다
break;
//연괄호가 더 많았을 때 성립이 되지않는 이유는 어차피 닫힌괄호도 봐야되므로
//닫힌 괄호만 확인해주면 됩니다
}
//연 괄호와 닫힌 괄호의 개수가 다르면 NO를 출력합니다
if (left != right)
printf("NO\n");
else
printf("YES\n"); //일치하면 YES를 출력합니다
left = 0; // 반복문을 다시 T만큼 돌아야되므로 '('의 개수를 초기화해줍니다
right = 0; // 마찬가지로 ')'의 개수를 초기화합니다
}
}
예제 입출력 결과
728x90