#include <stdio.h>
//#include <conio.h>
#include <string.h>
char word[201];
char cut_word[201][201];
char end[4]={'E', 'N', 'D', '\0'};
int cnt[201]={0};
void set_word(void); //word 배열을 초기화하는 함수
void set_cut_word(int a); //cut_word 배열을 초기화하는 함수
int cut(void); //단어로 끊어내는 함수
void line(int c); //알파벳 순으로 정렬하는 함수
int what(int a, int b); //어떤 것이 앞 순서인지 판단하는 함수
int main(void)
{
int c=0, i, k;
while(1)
{
scanf(" %[^\n]s", word);
//gets(word);
c=cut();
if(c==-1) //END가 입력되면 종료
break;
line(c);
for(i=0; i<c; i++)
{
printf("%s : %d\n", cut_word[i], cnt[i]);
}
set_word();
//strset(word, ' ');
for(i=0; i<c; i++)
{
set_cut_word(i);
//strset(cut_word[i], ' ');
cnt[i]=0;
}
}
return 0;
}
void set_word(void)
{
int i=0;
while(word[i]!='\0')
{
word[i++]=' ';
}
word[i]=' ';
}
void set_cut_word(int a)
{
int i=0;
while(cut_word[a][i]!='\0')
{
cut_word[a][i++]=' ';
}
cut_word[a][i]=' ';
}
int cut(void)
{
int i=0, j=0, k, a, b;
char temp[50];
for(k=0; ; k++)
{
if(word[k]==' ' || word[k]=='\0')
{
temp[j]='\0';
if(strcmp(temp, end)==0) //END가 입력되면 종료
return -1;
else if(i>0)
{
b=0;
for(a=0; a<i; a++)
{
if(strcmp(temp, cut_word[a])==0) //앞에 같은 단어가 있을 경우
{
cnt[a]++;
b=1;
break;
}
}
if(b==0)
{
cnt[i]++;
strcpy(cut_word[i++], temp);
}
}
else
{
cnt[i]++;
strcpy(cut_word[i++], temp);
}
if(word[k]=='\0') //입력된 문자열이 끝남
break;
j=0;
k++;
}
if(word[k]!=' ')
temp[j++]=word[k];
}
return i;
}
void line(int c)
{
int i, j, aa, max;
char temp[50];
for(i=0; i<c-1; i++)
{
max=i;
if(cut_word[i][0]!=' ')
{
for(j=i+1; j<c; j++)
{
if(what(max, j)==1) //앞 단어가 더 뒷 순서일 경우
{
max=j;
}
}
if(max!=i)
{
strcpy(temp, cut_word[i]);
strcpy(cut_word[i], cut_word[max]);
strcpy(cut_word[max], temp);
aa=cnt[i];
cnt[i]=cnt[max];
cnt[max]=aa;
}
}
//printf("----------------------------\n");
}
}
int what(int a, int b)
{
int i;
for(i=0; ; i++)
{
if(cut_word[a][i]>cut_word[b][i] || cut_word[b][i]=='\0')
{
//printf("%s > %s \n", cut_word[a], cut_word[b]);
return 1;
}
else if(cut_word[a][i]<cut_word[b][i] || cut_word[a][i]=='\0')
{
//printf("%s > %s \n", cut_word[b], cut_word[a]);
return 0;
}
}
}
2018.01.02 18:35
정올 - 실력키우기 - 단어 세기(1516)
조회 수 1049 추천 수 0 댓글 0