BRACKETS2 문제이서 오답부분을 모르겠어요 jskdmswls 괄호 닫기 문제인데 오답부분을 못찾겟습니다 stack 을 이용하긴 했는데 구조체보단 그냥 배열을 이용했습니다 { [ ( 가 나올땐 스텍이 해당하는 숫자를 넣어주고 } ] ) 가 나올땐 스택의 top에 해당하는 부분이 짝이 맞으면 pop하게 구현했습니다 #include <stdio.h> #include <string.h> int main() { int stack[10000]; char str[10001] = {NULL}; int top=0; int C; int i,l; scanf("%d",&C); for(i=0 ; i<10000 ; i++) stack[i] = 0; // stack 초기화 while(C--) { scanf("%s",str); l=strlen(str); // stack은 [1] 부터 입력시작 for(i=0; i<l ; i++) { if(str[i] == '[') { top++; stack[top] = 1; } else if(str[i] == ']') { if(stack[top] == 1) { stack[top] = 0; top--; } else { break; } } else if(str[i] == '(') { top++; stack[top] = 2; } else if(str[i] == ')') { if(stack[top] == 2) { stack[top] = 0; top--; } else { break; } } else if(str[i] == '{') { top++; stack[top] = 3; } else if(str[i] == '}') { if(stack[top] == 3) { stack[top] = 0; top--; } else { break; } } else break; } // for 종료 if(top==0) printf("YES\n"); else printf("NO\n"); top = 0; // top 초기화 for(i=0 ; i<10000 ; i++) stack[i] = 0; // stack 초기화 } // while 종료 } 10년 전
2개의 댓글이 있습니다. Toivoa ] 과 같은 케이스에서 top이 0인 상태에서 break걸리기 때문에 YES가 나올 것 같습니다. 10년 전 link jskdmswls 아~ 감사합니다 그거 해결하니까 정답됬어요 ㅎㅎ 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
jskdmswls
괄호 닫기 문제인데 오답부분을 못찾겟습니다
stack 을 이용하긴 했는데 구조체보단 그냥 배열을 이용했습니다
{ [ ( 가 나올땐 스텍이 해당하는 숫자를 넣어주고
} ] ) 가 나올땐 스택의 top에 해당하는 부분이 짝이 맞으면 pop하게 구현했습니다
10년 전