티스토리 뷰

학업

Anagram 구하기(철자바꾸기) 알고리즘

기리이이이이인 2016. 3. 6. 01:03

아래는 직접 구현한 소스이다.

원리는 string 내에 각 알파벳이 몇 개 있는지 카운트한 뒤, 차례대로 알파벳들을 하나씩 추가해가며 anagram들을 만든다.

이 때 같은 알파벳이 여러개 있는 경우에는 그 알파벳들이 들어갈 수 있는 위치를 조합(Combination)으로 구해 그 위치에만 넣는다.


다음은 STL의 next_permutation으로 구현한 소스이다.

시간복잡도는 k = string.size(), m = anagram의 수 일 때 정렬에 O(k log k), next_permutation에 O(mk)이다.

즉 위의 소스보다 더 좋다...


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함