염치불구하고.. xhaeneung 문제 소스코드 문제점 분석좀 부탁드립니다. K4L1 #include <stdio.h> #include <string.h> void count(char str[], int count[]); void count(char str[], int count[]) { int i, j; char alp = 'a'; for(i=0;i<26;i++) { for(j=0;j<11;j++) if(str[j] == alp) count[i]++; alp++; } } int main() { int i, j, size; int num_a, num_b, num_ans; char num[11][6] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}; char *p, op, str_a[6], str_b[6], str_out[11], str_ans[11]; scanf("%d", &size); for(i=0;i<size;i++) { int count_out[26] = {0}, count_ans[26] = {0}; scanf("%s %c %s %*c %s", str_a, &op, str_b, str_out); for(j=0;j<11;j++) { if(!strcmp(str_a, num[j])) num_a = j; if(!strcmp(str_b, num[j])) num_b = j; } while((p = strchr(str_out, '\n')) != NULL) *p = '\0'; switch(op) { case '+': num_ans = num_a + num_b; break; case '-': num_ans = num_a - num_b; break; case '*': num_ans = num_a * num_b; break; } for(j=0;j<11;j++) { if(j == num_ans) strcpy(str_ans, num[j]); } count(str_out, count_out); count(str_ans, count_ans); for(j=0;j<26;j++) { if(count_out[j] == count_ans[j]) { if(j == 25) printf("Yes\n"); continue; } else { printf("No\n"); break; } } } } 대충 생각한 풀이법은 입력받은 문자열과 정답 문자열의 각 알파벳 개수를 배열로 저장하고 비교하는 것인데.. 어디가 잘못된 것일까요? 9년 전
1개의 댓글이 있습니다. hyunhwan num_ans의 답이 0미만 혹은 10을 초과하는 경우 str_ans 문자열 배열이 기존의 값으로 유지되는 문제가 있을 것으로 보입니다. 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
K4L1
대충 생각한 풀이법은 입력받은 문자열과 정답 문자열의 각 알파벳 개수를 배열로 저장하고 비교하는 것인데.. 어디가 잘못된 것일까요?
9년 전