이 문제는 구조체를 이용해서 풀었다. 길이를 저장하는 int형 변수와, 단어를 저장하는 char형 배열을 구조체로 담고, 데이터를 받아오면서 길이를 strlen 함수로 즉각즉각 담아준다.
정렬 할 때엔 c언어 레퍼런스 함수인 qsort 를 이용하여 정렬. 이 때 qsort에 들어가는 cmp 함수는, 길이를 먼저 비교하고, 길이가 같을 때에만 strcmp 함수로 비교를 해주는 함수이다.
이제 출력하면 되는데, 같은 단어가 있으면 한번만 출력해야 한다. 데이터를 받아올 때 같은 문장은 저장을 안하도록 할 수 도 있지만, 그냥 다 받아와서 정렬을 하고 나면, 같은 단어는 연속으로 저장되기 때문에, 쉽게 거를 수 있다. temp변수를 하나 둬서 현재 위치의 단어와 temp 의 단어가 다를 때에만 temp의 단어를 출력 해주고, temp의 값을 현재 위치로 바꾸어 주는 작업을 반복하면 된다.
댓글 없음:
댓글 쓰기