더북(TheBook)

여러분은 어떤 것을 선택해야 하는가? 첫 번째 단계는 각 자료 구조를 구현하는 데 필요한 작업에 대해 생각해보는 것이다. 접두어라면 앞에서 단어를 제거하고, 끝에서 단어를 추가할 수 있어야 한다. 예를 들어 현재 접두어가 Half a라면 다음 단어는 bee이고, 다음 접두어는 a bee가 된다.

첫 번째 선택이 리스트라면 원소를 추가하거나 제거하기는 쉽지만, 접두어를 사전에서 키로 사용할 수 있어야 하므로 리스트는 제외해야 한다. 튜플이라면 추가나 제거는 할 수 없지만, 덧셈 연산자를 사용해 새 튜플을 만들 수 있다.

def shift(prefix, word):

return prefix[1:] + (word,)

shift는 단어의 튜플 prefix와 문자열 word를 받고 prefix에서 첫 번째를 제외한 모든 단어와 word를 끝에 추가한 튜플을 새로 만든다.

접미어 컬렉션에서 우리가 필요한 작업은 새로운 접미어를 추가(또는 기존 접미어의 빈도를 증가)하거나 무작위 접미어를 선택하는 것이다.

새 접미어를 추가하는 것은 리스트 구현이나 히스토그램, 어느 것을 선택해도 쉽다. 단, 리스트에서는 무작위 원소를 선택하는 것이 쉽고, 히스토그램에서는 무작위 원소 선택을 효율적으로 하기가 어렵다(연습문제 13-7 참조).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.