brakets2 문제에 다시 한번질문이요 vvarzero 소스코드만 줄였는데 런타임오류에서 오답으로 바뀌었네요. 아무튼 문제에 주어진 입력값에는 전혀 문제없이 정답을 출력합니다.안 입오답이 나오는 입력값 좀 알려주실 수 있을까요? 아래 소스는 str배열에 입력값을 넣고 leftCh배열에는 ({[문자를 넣고 rightCh배열에는 )}]문자를 넣었습니다. 그리고 하나하나 체크해서 짝이 맞지않으면 no를 출력 짝이 맞으면 yes를 출력하도록 소스를 짰습니다. #include #include #include int main(void) { int i, j; int numTestCases; scanf("%d",&numTestCases); for(i=0;i<numTestCases;i++) { int len=0; char str[10000]={0}; char leftCh[10000]={0}; char rightCh[10000]={0}; int lCnt=0,rCnt=0,chk=1; scanf("%s",&str); len=strlen(str); for(j=0;j<len;j++) { if(str[j] == '(' || str[j] == '[' || str[j]== '{') { if(str[j] == '(') { leftCh[lCnt++]=str[j]; rightCh[rCnt++]=str[j]+1; } else if(str[j] == '[' || str[j] == '{') { leftCh[lCnt]=str[j]; rightCh[rCnt++]=str[j]+2; } } else if(str[j] == ')' || str[j] == ']' || str[j] == '}') { if( rightCh[ strlen(rightCh)-1 ] == str[j] ) { rightCh [ strlen(rightCh)-1 ] = 0; rCnt--; continue; } else if( rightCh[ strlen(rightCh)-1 ] != str[j] ) { chk=0; break; } } } if(chk == 1) printf("YES \n"); else if(chk == 0) printf("NO \n"); } return 0; } 11년 전
3개의 댓글이 있습니다. gamzachip 그냥 오타 몇개 있으신거 같은데 예를들어 {[]} 이거 처리 안될거 같아요 그리구 rCnt 변수를 만들어 두시구 strlen 을 쓴 이유도 궁금하네요 11년 전 link vvarzero strlen 쓸 필요가 없었네요 ㅋㅋㅋ 아무튼 오타라면 if {[( 이 부분에서 leftCh[lCnt]부분 말씀하시는건가요? 다시 고쳐서 해봐도 오답이 뜨네요. 뭔가 소스 전체 흐름에 문제인 것 같은데....제가 짠 소스에서 뭐가 문제인지 알고싶네요 ㅠ. {[]}도 문제없이 처리가 되고 ㅠ왠만한거는 다 해봤는데 잘 처리됩니다 ㅠㅠ 11년 전 link vvarzero 아 문제점 발견했네요. (() 하면 yes뜨네요 11년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
vvarzero
소스코드만 줄였는데 런타임오류에서 오답으로 바뀌었네요.
아무튼 문제에 주어진 입력값에는 전혀 문제없이 정답을 출력합니다.안
입오답이 나오는 입력값 좀 알려주실 수 있을까요?
아래 소스는 str배열에 입력값을 넣고
leftCh배열에는 ({[문자를 넣고 rightCh배열에는 )}]문자를 넣었습니다.
그리고 하나하나 체크해서 짝이 맞지않으면 no를 출력 짝이 맞으면 yes를 출력하도록 소스를 짰습니다.
#include
#include
#include
int main(void)
{
int i, j;
int numTestCases;
scanf("%d",&numTestCases);
}
11년 전