XHAENEUNG 문제 질문합니다!! gkwhdgns 안녕하세요! XHAENEUNG 문제가 잘 해결되지 않아 질문합니다. 입력받은 문자열을 각각 ASCII코드로 바꾸어 알파벳인 경우와 연산자를 나눈다. 알파벳이면 alphabet배열에 수를 센다. 빈칸(' ')인 경우, 모아두었던 alphabet을 수로 바꾼다. 연산하여 true/false인 경우를 나눈다. 결과에 따라 "Yes", "No"를 출력한다. 이 과정으로 문제 풀이를 진행하였습니다. 오답으로 나오는데 어느 부분에서 문제인지 정확히 모르겠습니다. 문제 생기는 부분을 아시면 답변 부탁드립니다. 감사합니다. #include <stdio.h> #include <string.h> bool reArrange(char* string); int getNumber(int* alphebet); bool operation(int num1, int num2, char op, int result); int main(){ int num = 0; int a = scanf("%d\n", &num); for(int i=0; i<num; i++){ char string[100] = {}; char *p; //a = scanf("%[^\n]s", string); char *t = fgets(string, sizeof(string)-1, stdin); if( (p=strchr(string, '\n')) != NULL ) *p = '\0'; bool result = reArrange(string); if(result){ printf("Yes\n"); }else{ printf("No\n"); } } return 0; } bool reArrange(char* string){ int count = 0; int alphabet[26] = {0}; int num1 = -2; int num2 = -2; int result = -2; char myOperator; while(string[count]){ int temp = string[count]; if(temp >= 97 && temp <= 122){ // alphebet alphabet[temp-97]++; }else if(temp == 42 || temp == 43 || temp == 45 || temp == 47){ // +_*/ myOperator = string[count]; count++; }else if(temp == 32){ // ' ' int number = getNumber(alphabet); if(number == -1){ // not 0 to 10 return false; }else if(num1 == -2){ num1 = number; }else if(num2 == -2){ num2 = number; } for(int i=0; i< 26; i++){ // initialize alphabet[i] = 0; } }else if(temp == 61){ // = count++; } count++; } // last number result = getNumber(alphabet); return operation(num1, num2, myOperator, result); } int getNumber(int* alphebet){ int result = -1; if(alphebet[25] == 1 && alphebet[4] == 1 && alphebet[17] == 1 && alphebet[14] == 1){ // 0 result = 0; }else if(alphebet[14] == 1 && alphebet[13] == 1 && alphebet[4] == 1){ // 1 result = 1; }else if(alphebet[19] == 1 && alphebet[22] == 1 && alphebet[14] == 1){ // 2 result = 2; }else if(alphebet[19] == 1 && alphebet[7] == 1 && alphebet[17] == 1 && alphebet[4] == 2){ // 3 result = 3; }else if(alphebet[5] == 1 && alphebet[14] == 1 && alphebet[20] == 1 && alphebet[17] == 1){ // 4 result = 4; }else if(alphebet[5] == 1 && alphebet[8] == 1 && alphebet[21] == 1 && alphebet[4] == 1){ // 5 result = 5; }else if(alphebet[18] == 1 && alphebet[8] == 1 && alphebet[23] == 1){ // 6 result = 6; }else if(alphebet[18] == 1 && alphebet[4] == 2 && alphebet[21] == 1 && alphebet[13] == 1){ // 7 result = 7; }else if(alphebet[4] == 1 && alphebet[8] == 1 && alphebet[6] == 1 && alphebet[7] == 1 && alphebet[19] == 1){ // 8 result = 8; }else if(alphebet[13] == 2 && alphebet[8] == 1 && alphebet[4] == 1){ // 9 result = 9; }else if(alphebet[19] == 1 && alphebet[4] == 1 && alphebet[13] == 1){ // 10 result = 10; } return result; } bool operation(int num1, int num2, char op, int result){ int answer; if(op == '+'){ answer = num1 + num2; }else if(op == '*'){ answer = num1 * num2; }else if(op == '-'){ answer = num1 - num2; }else if(op == '/'){ if(num2 == 0){ return false; } answer = num1 / num2; }else{ return false; } if(answer == result){ return true; } return false; } 9년 전
1개의 댓글이 있습니다. gkwhdgns 문자열을 입력받는 과정에서 오류가 있었던 것 같습니다. 다른 방식으로 하여 문제를 풀었습니다. 감사합니다. 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
gkwhdgns
안녕하세요!
XHAENEUNG 문제가 잘 해결되지 않아 질문합니다.
결과에 따라 "Yes", "No"를 출력한다.
이 과정으로 문제 풀이를 진행하였습니다.
오답으로 나오는데 어느 부분에서 문제인지 정확히 모르겠습니다.
문제 생기는 부분을 아시면 답변 부탁드립니다.
감사합니다.
9년 전