lakin32   1년 전

안녕하세요, Anagram 문제를 다 풀어보고자하여 열심히 풀고있는 공부하는 평범한 유저입니다.

코드를 하나하나 읽어 주시는 것보다 이해를 돕고자 작성 코드의 의도한 바를 먼저 설명드리면 아래와 같습니다!

1. 단어의 입력과 동시에 문자별로 counting sort를 통해 abcba, aabbc 두개의 Word라는 클래스 인스턴스 배열에 저장합니다.

2. 저장이 완료되었으면 counting소트한 aabbc와 같은 값을 기준으로 redix sort를 합니다. 일반적인 sort는 NlogN이지만 redix sort를 돌리면 DN만에 가능합니다. 정렬 기준는 Counting Sort의 결과물의 오른쪽 알파벳 순으로 정렬됩니다.

예를 들어서)

2-1. BCA BCC BAA라면 ABC, BCC, AAB을 각 word 클래스에 저장해놓습니다.
2-2. redix sort에서 오른쪽의 끝 순으로 비교합니다. C, C, B를 꺼내 B를 가장 먼저 배치시킵니다.
2-3. sort가 완료되면 AAB, ABC, BCC순의 array배열이 완성됩니다.
2-3-1. 만약 단어 중에 ABC ACB BAC 형식의 애너그램이 존재할떄에는 해당 단어가 연속해서 배치됩니다.

3. for문으로 words 배열을 순회하면서 이전단어를 먼저 anagram 인스턴스로 만들어 놓은 후 다음 단어와 일치하면 해당 anagram인스턴스에 merge함수를 통해 저장합니다

3-1. 틀린경우 기존 anagram 인스턴스를 anagram list에 저장한 후 새로운 anagram을 생성합니다.

4. 마지막 anagram을 저장을 끝으로 문제의 제시된 group of size와 아나그램 그룹의 사전 순 가장 앞의 단어의 기준으로 같은 사이즈 그룹에 대해서 정렬합니다.

5. 해당 출력 포맷에 맞게 출력합니다.


일단 프로세스 상에서는 문제가 없다고 생각했지만 50프로 답안 검사지점에서 틀린 답안이라고 출력되더라구요.
(제가 생각해본 모든 테스트케이스는 모두 정상이라고 떠서 더 혼란스럽습니다.)

실력자분들의 넓은 견해로 도와주시면 정말 감사드리겠습니다.


ADD

죄송합니다. 출력형식에서 같은 단어일 경우 한번만 출력을 못봤었네요..

댓글을 작성하려면 로그인해야 합니다.