Lavida 1957 써니의 영어 문장 채점

1 분 소요

문제 설명

래닝 박사의 살인 사건이 스푸너 형사에 의해 해결되고 난 후 써니는 다른NS-5 로봇들의 지도자가 되어 로봇을 가르치고 이끄는 역할을 하게 되었다. 써니는 로봇들에게 영어 작문을 가르치는데 특이하게도 문장의 아름다움 보다는 써니가 좋아하는 특정 알파벳이 많이 들어가면 점수를 많이 주고 싫어하는 특정 알파벳이 들어가면 감점을 하는 방식으로 문장에 대한 점수를 매긴다.(대소문자를 따지지 않고 해당 알파벳이 있기만 하면 된다.) 처음에는 써니가 직접 채점을 하였지만 가르치는 로봇들이 많아지자 귀찮아지기 시작하였다. 이제 여러분이 써니를 도와 줄 자동 채점 프로그램을 작성해 보자. 문장에서 점수를 주는 규칙은 다음과 같다.

대문자 또는 소문자로 알파벳 w, x, y, z가 들어갈 경우 각 글자당 29점을 부여한다.
대문자 또는 소문자로 알파벳 b, d, f, p가 들어갈 경우 각 글자당 15점을 부여한다.
대문자 또는 소문자로 알파벳 a, e, i, o, u가 들어갈 경우 각 글자당 8점을 부여한다.
대문자 또는 소문자로 알파벳 r, s, t가 들어갈 경우 각 글자당 7점을 감점한다.
이상의 경우 이외에는 어떠한 문자가 들어와도 점수를 부여하거나 감점하지 않는다.

입력 설명

첫 줄에는 문장의 수(테스트 케이스) T가 입력된다.(1 ≤ T ≤ 10)

다음 줄부터 T개의 영어 문장이 입력된다. 문장은 한 줄로 이뤄지며, 문장의 끝은 항상 독립된 .(period)(마지막 단어와 period 사이에는 공백이 존재)로 끝난다. 입력되는 영어 문장에서 각 단어의 최대 알파벳 수는 20 미만이며 대소문자가 함께 입력될 수 있다.

출력 설명

각 문장당 채점 결과를 한 줄에 하나씩 출력한다.

입력 예시

2
What a wonderful world .
Boys, be ambitious! .

출력 예시

159
109

코드1

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main() {
	int testcase, count = 0;
	char arr[21];
	char  input[1];
	scanf("%d", &testcase);
	for (int i = 0; i < testcase; i++)
	{
		while (1)
		{
			scanf("%s", arr);
			if (arr[0] == '.') {
				printf("%d\n", count);
				count = 0;
				break;
			} 
			else {
				for (int j = 0; j < strlen(arr); j++)
				{
					input[0] = tolower(arr[j]);
					if (input[0] == 'w' || input[0] == 'x' || input[0] == 'y' || input[0] == 'z') {
						count += 29;
					}else if (input[0] == 'b' || input[0] == 'd' || input[0] == 'f' || input[0] == 'p') {
						count += 15;
					}
					else if (input[0] == 'a' || input[0] == 'e' || input[0] == 'i' || input[0] == 'o' || input[0] == 'u') {
						count += 8;
					}
					else if (input[0] == 'r' || input[0] == 's' || input[0] == 't') {
						count -= 7;
					}
				}
			}
		}
	}
	return 0;
}

나 : say

tolower은 대문자를 소문자로 바꾸고 소문자 인경우는 그냥 반환한다.

댓글남기기