BRACKETS2 질문 합니다. uecoyk case 별로 push, pop 을 수행하도록 구현하였습니다. {,(,[ 모두 합쳤을 때 pair 로 입력이 되어야 하므로, stack array는 MAX(10000)/2 로 잡고 5000 이 넘으면 짝이 맞지 않는 것으로 합니다. 입력 끝까지 해결했는데, stack array에 값이 있으면, 짝이 맞지 않는 것으로 하였습니다. 오류가 나오는데 추가로 고려해야 할 것이 있는지 검토 요청드립니다 #include <stdio.h> #include <string.h> int top, bottom; char bracket[5000]; int push(int data) { if (top < 5000) top++; else return -1; bracket[top] = data; return 0; } int pop(int data) { if (top == -1 ) return -1; if (bracket[top] != data) return -1; else { bracket[top] = 0; if (top > -1) top--; return 0; } } int main(void) { int i, j, ret; unsigned int test_case, N=0; char buf[10001]; //freopen("input.txt", "r", stdin); setbuf(stdout, NULL); scanf("%d", &N); if (N > 100) return 1; for (test_case = 0; test_case <= N; test_case++) { memset(buf, 0, sizeof(buf)); memset(bracket, 0, sizeof(bracket)); scanf("%s", buf); i = 0; top = -1; bottom = 0; while (buf[i]) { ret = 0; switch (buf[i]){ case '(': ret = push(1); break; case ')': ret = pop(1); break; case '{': ret = push(2); break; case '}': ret = pop(2); break; case '[': ret = push(3); break; case ']': ret = pop(3); break; } if (ret) break; i++; } if (ret) printf("No\n"); else { if (bracket[bottom]) printf("No\n"); else printf("Yes\n"); } } return 0; } 8년 전
1개의 댓글이 있습니다. ison5059 돌려보지 않아서 잘 모르겠지만 일단 문제 명세에서는 출력의 결과가 다 대문자로 나와야하는데 여기서는 대소문자가 혼용되있네요~ Yes -> YES / No -> NO 8년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
uecoyk
case 별로 push, pop 을 수행하도록 구현하였습니다.
{,(,[ 모두 합쳤을 때 pair 로 입력이 되어야 하므로, stack array는
MAX(10000)/2 로 잡고 5000 이 넘으면 짝이 맞지 않는 것으로 합니다.
입력 끝까지 해결했는데, stack array에 값이 있으면, 짝이 맞지 않는 것으로 하였습니다.
오류가 나오는데 추가로 고려해야 할 것이 있는지 검토 요청드립니다
8년 전