POST

C언어 '('와')' 의 짝이 맟는지 검사하는 프로그램 만들기




조건 1: '(', ')' 이둘의 갯 수가 같아야 한다.

조건 2: 첫번째에 ')'이 오면 안되고 마지막에는 '(' 이 오며 안된다.

조건 3: 앞의 '(' 뒤에  ')'이 더 많이 있으면 안된다.


이 세가지 조건을 생각하면서 하면 쉽게 풀수 있습니다


#include<stdio.h>

#pragma warning(disable:4996) // 2010 이상 scanf 보안 경고 제거용


#define SIZE 100 // 배열의 크기 지정용


int main(void) {

int index=0; // 문자열 배열의 인덱스 값

int i=0, j=0; // '('와 ')'

char inout[SIZE];

printf("괄호를 입력: ");

scanf("%s", inout);


/* 각각의 갯수 카운트 */

while (inout[index] != NULL) {

if (inout[index] == '(')

i++;

else if (inout[index] == ')')

j++;

else { // '('와')' 가 아닐 경우

printf("오직 '('와 ')'만 입력이 가능합니다 !!\n");

return 0;

}

index++;

}

/* Check1 괄호의 갯수가 맞는지 검사 */

if (i != j) {

printf("NO\n");

return 0;

}


/* Check2 제일 앞쪽과 제일 뒤쪽의 괄호가 정상적인지 검사 */

if (inout[0] == ')' || inout[(i + j) - 1] == '(') {

printf("NO\n");

return 0;

}


/* Check3 괄호의 순서 검사 */

for (index = 0; inout[index] != NULL; index++) {

if (inout[index] == '(')

i--;

else

j--;

if (i > j) { // ')'가 '('보다 먼저 입력된다면 NO

printf("NO\n");

return 0;

}

}

printf("YES\n");


return 0;

}