ascode 1134: 영문 채점 #2

1 분 소요

문제 설명

예준이는 특정 규칙에 따라 영어 문장의 점수를 자동으로 매기는 프로그램을 작성하려고 한다. 특정 규칙이란 지정된 특정 단어가 문장에 있으면 감점을 하게 된다. 이제 여러분은 예준이를 돕기 위해 채점 프로그램을 작성해 보자. 문장에서 점수를 매기는 규칙은 다음과 같다.

테스트케이스 별로 주어지는 감점 단어들이 문장 중에 어디라도 나타나면 대소문자에 관계없이 해당 단어에 주어진 점수를 감점한다(대소문자 구별하지 않음).
이상의 경우를 제외한 모든 단어에 대해서는 각 단어 길이의 제곱을 합산한다.
최종 계산된 값이 0 이상인 경우에만 감점 단어를 제외한 단어의 수로 나눈 몫을 최종 점수로 산출한다.
최종 점수가 0보다 작은 경우에는 Fail을 출력한다.

입력 설명

첫 줄에 감점을 위한 단어의 수(m, 1<=m<=10)와 채점할 영어 문장의 수(n, 1<=n<=10)가 주어진다.

다음 줄부터 감점을 위한 영어 단어와 감점할 점수(1 이상, 30 이하) 쌍이 m줄 입력되고 난 다음에 영어 문장이 n개 입력되며 각 영어 문장의 끝은 항상 독립된 .(period)(마지막 단어와 period 사이에는 공백이 존재)로 끝난다.

사용되는 모든 단어의 최대 알파벳 수는 20이하이며 . (period) 이외의 특수 문자는 들어오지 않는 것으로 가정한다.

출력 설명

각 문장당 채점 결과를 한 줄에 하나씩 출력한다. 최종 점수가 0보다 작은 경우에는 Fail을 출력한다.

입력 예시

2 2
bad 5
Not 15
What a bad world .
What a not wonderful World .

출력 예시

12
27

코드1

#include <stdio.h>

int main(void)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
struct data
{
    char arr[25];
    int price;
};
 
int main()
{
    struct data list[10];
    int a, b, c, num, ccunt = 0, ccc = 0;
    int count = 0;
    char oword[25];
 
    scanf("%d %d", &a, &b);
    for (int i = 0; i < a; i++) {
        scanf("%s", &list[i].arr);
        scanf("%d", &list[i].price);
    }
 
    for (int i = 0; i < b; i++) {
        while (1) {
            scanf("%s", oword);
            if (oword[0] == '.') {
                if (ccunt < 0) {
                    printf("Fail\n");
                }
                else {
                    printf("%d\n", ccunt / ccc);
                }
                ccunt = 0, ccc = 0;
                break;
            }
            else {
                num = strlen(oword);
                ccc++;
                ccunt += (num * num);
                for (int i = 0; i < a; i++)
                {
                    if (num == strlen(list[i].arr)) {
                        for (c = 0; c < num; c++)
                        {
                            if (tolower(oword[c]) == tolower(list[i].arr[c])) {
                                count++;
                            }
                        }
                        if (count == num) {
                            ccunt -= list[i].price;
                            ccunt -= (num * num);
                            ccc--;
                        }
                        count = 0;
                    }
                }
            }
        }
    }
    return 0;
}

나 : say

댓글남기기