#include <stdio.h> char word[50]; char list[50][50]; int finish(void); //종료할지 말지 결정 void pr(int c); //출력 int list_put(int c); //단어 목록 int search(int a, int c); //단어 목록에 있는 문자인지 검색 int main(void) { int c=0, i; while(1) { scanf(" %[^\n]s", word); if(finish()==1) break; c=list_put(c); pr(c); for(i=0; word[i]!='\0'; i++) //초기화 word[i]=' '; word[i]=' '; } return 0; } int finish(void) { if(word[0]=='E' && word[1]=='N' && word[2]=='D' && word[3]=='\0') //스트링 값이 'END'인 경우 return 1; else return 0; } void pr(int c) { int i, j; for(i=0; i<c; i++) { for(j=0; list[i][j]!='\0' && list[i][j]!=' '; j++) printf("%c", list[i][j]); printf(" "); } printf("\n"); } int list_put(int c) { int i=0, j, a; for(; word[i]!='\0';) { if(word[i]!=' ') { a=search(i, c); if(a==0) //단어 목록에 없는 단어일 경우 { for(j=0; word[i]!=' ' && word[i]!='\0'; i++, j++) { list[c][j]=word[i]; } list[c++][j]='\0'; i++; } else //단어 목록에 있는 단어일 경우 i=a; } else i++; } return c; } int search(int a, int c) { int i, j, an, k; char aa; for(i=0; i<c; i++) { if(word[a]==list[i][0]) { an=0; for(j=0, k=a; list[i][j]!='\0' && word[k]!=' '; j++, k++) { if(word[k]!=list[i][j]) //두 문자가 같지 않을 경우 { an=1; break; } } aa=word[k]; if(aa=='\0') aa=' '; if(an==0 && aa==' ' && list[i][j]=='\0') return k; } } return 0; }
2018.01.06 12:32
정올 - 실력키우기 - 단어집합(하)(1535)
조회 수 530 추천 수 0 댓글 0