코딩테스트를 위한 자료구조 알고리즘 29

알고리즘 이론 깨부수기 Array, Linked List, Stack, Queue, Tree

Array 가장 기본적인 자료구조로 논리적 저장 순서와 물리적 저장 순서가 일치한다. 따라서 인덱스로 해당 언소에 접근할 수 있어 찾고자하는 인덱스 값을 알고 있다면 O(1)의 시간 복잡도를 갖는다. 하지만 삭제하는 과정에서 원하는 값을 삭제하면 빈 공간이 생기고 그 빈 공간을 없애기 위해 뒤에 있는 값들을 당겨와야하기 때문에 O(N)의 시간복잡도를 갖는다. 삽입의 경우도 마찬가지이다. 만약 첫번째 자리에 새로운 원소를 추가하고자 한다면 모든 원소들의 인덱스를 1 씩 shift 해줘야 하므로 이 경우도 O(n)의 시간을 요구하게 된다. Linked List 배열의 문제점을 해결하기 위한 자료구조가 linked list이다. 링크드 리스트는 삽입과 삭제시 O(1)의 시간 복잡도를 가지게된다. 추가 0과 2..

가장 흔한 단어

금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라. 대소문자 구분을 하지 않으며, 구두점 또한 무시한다. 풀이1 더보기 words = [word for word in re.sub in re.sub(r'[^\w]', ' ', paragraph) .lower().split() if word not in banned] counts = collections.Counter(words) # 가장 흔하게 등장하는 단어의 첫 번째 인덱스 리턴 return counts.most_common(1)[0][0]