반응형
https://www.algospot.com/judge/problem/read/WORDLENGTH
문자열을 이어서 조건을 3가지로 나눠 처리한다.
#include <stdio.h>
#define LINE_MAX 81
#define STR_MAX 50*LINE_MAX+1
int main()
{
int C;
for (scanf("%d", &C); C > 0; C--)
{
int i, j;
int N, words_len = 0, total_len = 0, words_count = 0, TAG = 0, STR_LEN = 0;
char STR[STR_MAX];
STR[0] = '\0';
scanf("%d", &N);
getchar();
for (i = 0; i < N; i++){
char buf[LINE_MAX];
fgets(buf, sizeof(buf)-1, stdin);
for (j = 0; buf[j] != '\0'; j++)
STR[STR_LEN++] = buf[j];
STR[STR_LEN] = '\0';
}
for (i = 0; i < STR_LEN; i++){
switch (STR[i])
{
case '-':
if (TAG == 0)
TAG = 1;
else if (words_len != 0){
++words_count;
total_len += words_len;
words_len = 0;
}
break;
case '\n':
if (TAG == 1)
TAG = 2;
else if (words_len != 0){
++words_count;
total_len += words_len;
words_len = 0;
}
break;
case ' ':
if (words_len != 0){
++words_count;
total_len += words_len;
words_len = 0;
}
break;
default:
if (TAG == 0 || TAG == 2 || words_len == 0)
++words_len;
else if (words_len != 0){
++words_count;
total_len += words_len;
words_len = 1;
}
TAG = 0;
break;
}
}
if (words_len != 0)
{
++words_count;
total_len += words_len;
}
printf("%.3lf\n", (double)total_len / (double)words_count);
}
return 0;
}
반응형
'ACM준비 > algospot' 카테고리의 다른 글
GRIDISLANDS (0) | 2015.07.30 |
---|---|
BRACKETS (0) | 2015.07.30 |
SENTENCE (0) | 2015.07.07 |
PASS486 (0) | 2015.07.07 |
DESIGNSCHOOL (0) | 2015.07.07 |