Lavida 2801 아보카도의 영문 채점
문제 설명
세현이가 새로 개발한 로봇 ‘아보카도’는 특정 규칙에 따라 영어 문장의 점수를 매기는 로봇이다. 특정 규칙이란 지정된 특정 단어가 들어가거나 대소문자 표기 약속을 어기면 감점을 하게 된다.(따라서 대소문자를 구별하게 된다.). 이제 여러분은 세현이가 만든 아보카도를 위한 채점 프로그램을 작성해 보자. 아보카도가 문장에서 점수를 매기는 규칙은 다음과 같다.
테스트케이스 별로 주어지는 감점 단어들이 문장 중에 어디라도 나타나면 해당 단어에 주어진 점수들을 감점한다.
감점 단어가 아닌데 문장 첫 단어의 첫 글자가 대문자가 아니거나, 첫 단어가 아닌 단어에서 첫 글자에 대문자가 나타나면 그 단어 점수는 합산하지 않고 2점을 감점한다.
이상의 경우를 제외한 모든 단어에 대해서는 단어의 각 길이를 합산한다.
최종 점수가 0보다 작은 경우에는 Fail을 출력한다.
입력 설명
첫 줄에 감점을 위한 단어의 수(m, 1<=m<=10)와 채점할 영어 문장의 수(n, 1<=n<=10)가 주어진다. 다음 줄부터 감점을 위한 영어 단어와 감점할 점수(1 이상, 30 이하) 쌍이m줄 입력되고 난 다음에 영어 문장이n개 입력되며 각 영어 문장의 끝은 항상 독립된 .(period)(마지막 단어와 period 사이에는 공백이 존재)로 끝난다. 사용되는 모든 단어의 최대 알파벳 수는 25 이하이며 . (period) 이외의 특수 문자는 들어오지 않는 것으로 가정한다.
출력 설명
각 문장당 채점 결과를 한 줄에 하나씩 출력한다. 최종 점수가 0보다 작은 경우에는 Fail을 출력한다.
입력 예시
2 2
bad 5
Not 15
What a bad world .
What a not wonderful World .
출력 예시
5
15
코드1
#include <stdio.h>
#include <string.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);
}
ccunt = 0, ccc = 0;
break;
}
else {
num = strlen(oword);
ccc ++;
if (ccc == 1 && oword[0] >= 97) {
ccunt -= 2;
for (int i = 0; i < a; i++)
{
if (num == strlen(list[i].arr)) {
for (c = 0; c < num; c++)
{
if (oword[c] == list[i].arr[c]) {
count++;
}
}
if (count == num) {
ccunt -= list[i].price;
ccunt += 2;
}
count = 0;
}
}
}
else if(ccc != 1 && oword[0] <= 90) {
ccunt -= 2;
for (int i = 0; i < a; i++)
{
if (num == strlen(list[i].arr)) {
for (c = 0; c < num; c++)
{
if (oword[c] == list[i].arr[c]) {
count++;
}
}
if (count == num) {
ccunt -= list[i].price;
ccunt += 2;
}
count = 0;
}
}
}
else {
ccunt += num;
for (int i = 0; i < a; i++)
{
if (num == strlen(list[i].arr)) {
for (c = 0; c < num; c++)
{
if (oword[c] == list[i].arr[c]) {
count++;
}
}
if (count == num) {
ccunt -= list[i].price;
ccunt -= num;
}
count = 0;
}
}
}
}
}
}
return 0;
}
나 : say
이틀을 붙잡아서 만든 것
댓글남기기