만들었던 Stack 함수들을 이용하여 괄호 문제를 풀어보았다.
Stack 함수 : https://pilimage.tistory.com/12
int main(){
int num;
int i,j;
int err=0;
scanf("%d",&num);
char input[50];
int *errList;
errList=(int*)malloc(sizeof(int)*num);
Stack s;
for(i=0;i<num;i++){
memset(input,0x00,sizeof(input));
scanf("%s",input);
initStack(&s,strlen(input));
for(j=0;j<strlen(input);j++){
if(input[j]=='('){
pushStack(&s,input[j]);
}else{
if(popStack(&s)==0){
errList[i]=1;
}
}
}
if (!isEmptyStack(&s)){
errList[i]=1;
}
DelStack(&s);
}
for(i=0;i<num;i++){
if(errList[i]){
printf("NO\n");
}else{
printf("YES\n");
}
}
free(errList);
return 0;
}
입력을 받아서 ' ( '를 만나면 스택에 push하고 ' ) '를 만나면 pop을 하도록하였다.
' ) '을 만나서 pop을 할때, ' ( '와 ' ) '는 한 쌍이므로 ' ) '를 만났는데 스택에 ' ( '가 없어서 pop을 하지 못한다면 에러로 처리하였다.
입력을 다 서치하고, 스택에 데이터인 ' ( '가 남아 있다면 에러로 처리하였다.
err flag과 errList를 이용하여 마지막에 결과를 출력하도록 하였다.
끝
'지식저장소 > C' 카테고리의 다른 글
[C] AverageFilter (평균 필터) (0) | 2022.04.28 |
---|---|
[C] Ring Buffer / 링버퍼 구현 (0) | 2022.03.29 |
[C]구조체를 이용한 Stack 구현 (0) | 2022.02.16 |
[C/STM32] Uart로 printf 대신하기 (0) | 2022.01.14 |
[C] Hex Convert to HexString And HexString Convert to Hex (0) | 2021.10.26 |