WORDLENGTH문제 잘 안풀리네요. 질문드립니다. sw.park 안녕하세요. 며칠을 고민하고 있는데 문제가 해결되지 않아 질문드립니다. WORDLENGTH 문제를 풀고 있습니다. fgets()로 전체 문자열을 입력받았으며, 알파벳을 제외한 문자가 발생할 수 있는 경우에 case문을 통해서 처리하고 있습니다. --- -- --- a--a aaaa a- - b 와 같이 제가 생각하기에 corner case가 될법한 것들을 테스트해봐도 제대로 답이 나오는데 계속 오답처리가 되어 답답한 마음에 힌트를 얻고자 질문드립니다. 감사합니다. #include<stdio.h> #include<string.h> #include<stdlib.h> #include<stdbool.h> #define DEBUG 0 int length[4000]; int idx_length; char input[50][80]; int main(){ int c,n; int i,j; int pre_length; float sum; int string_length; int return_idx; scanf("%d", &c); while(c--){ scanf("%d\n", &n); memset(length,0,sizeof(length)); memset(input,0,sizeof(char)*50*80); idx_length=0; string_length=0; return_idx=0; sum=0; for(i=0;i<n;i++){ fgets(input[i], sizeof(input[i]), stdin); } for(i=0;i<n;i++){ for(j=0;j<sizeof(input[i]);j++){ switch(input[i][j]){ case '-': if(input[i][j+1]!=10 && string_length>0){ //문자 중간에 '-'가 들어갈경우 length[idx_length++]=string_length; string_length=0; } break; case ' ': if(string_length>0){ //문자 중간에 공백이 들어갈 경우 length[idx_length++]=string_length; string_length=0; } break; case 10: if(j>1 && input[i][j-1]=='-' && input[i+1][0] >='a' && input[i+1][0]<='z'){ break; } else if(string_length>0){ length[idx_length++]=string_length; string_length=0; } break; default: if(input[i][j]>='a' && input[i][j]<='z') string_length++; break; } #if DEBUG if(input[i][j]!=0) printf("idx %d value %c %d string lenth %d idx_length %d\n",i,input[i][j], input[i][j], string_length, idx_length); #endif } } for(i=0;i<idx_length;i++){ sum+=length[i]; } #if DEBUG printf("sum %f idx_length %d \n",sum, idx_length); #endif if(idx_length==0) idx_length=1; printf("%.4f\n", sum/idx_length); } return 0; } 8년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
sw.park
안녕하세요. 며칠을 고민하고 있는데 문제가 해결되지 않아 질문드립니다.
WORDLENGTH 문제를 풀고 있습니다.
fgets()로 전체 문자열을 입력받았으며,
알파벳을 제외한 문자가 발생할 수 있는 경우에 case문을 통해서 처리하고 있습니다.
와 같이 제가 생각하기에 corner case가 될법한 것들을 테스트해봐도 제대로 답이 나오는데
계속 오답처리가 되어 답답한 마음에 힌트를 얻고자 질문드립니다.
감사합니다.
8년 전