2014년 7월 18일 금요일

1181 단어정렬

주어진 단어들을 오름차순으로 정렬하는 문제이다. 단, 여기서의 단어의 대소는, 약간 다르게 길이가 짧으면 무조건 작다고 판단한다.

이 문제는 구조체를 이용해서 풀었다. 길이를 저장하는 int형 변수와, 단어를 저장하는 char형 배열을 구조체로 담고, 데이터를 받아오면서 길이를 strlen 함수로 즉각즉각 담아준다.

정렬 할 때엔 c언어 레퍼런스 함수인 qsort 를 이용하여 정렬. 이 때 qsort에 들어가는 cmp 함수는, 길이를 먼저 비교하고, 길이가 같을 때에만 strcmp 함수로 비교를 해주는 함수이다.

이제 출력하면 되는데, 같은 단어가 있으면 한번만 출력해야 한다. 데이터를 받아올 때 같은 문장은 저장을 안하도록 할 수 도 있지만, 그냥 다 받아와서 정렬을 하고 나면, 같은 단어는 연속으로 저장되기 때문에, 쉽게 거를 수 있다. temp변수를 하나 둬서 현재 위치의 단어와 temp 의 단어가 다를 때에만 temp의 단어를 출력 해주고, temp의 값을 현재 위치로 바꾸어 주는 작업을 반복하면 된다.

댓글 없음:

댓글 쓰기