반응형

자료구조 4

[Trie] 문자열 검색이 용이하게 만든 트리

안녕하세요 Dibrary입니다. Trie 자료구조는 트리 형태의 자료구조인데, '문자열' 검색을 용이하게 하기 위한 자료구조 입니다. 먼저 구글에 Trie python를 검색해보면 여러 이미지들이 나옵니다. 그 중에 한 개를 살펴 보죠. 이게 뭘 의미하는거냐면, to와 tea와 ten이라는 단어는 똑같이 t로 시작하죠? 그래서 t라는 노드 밑에 위치합니다. to에서 o는 tea와 ten에 없으므로 t 노드 밑에 o가 있음으로써, 해당 경로로 검색을 하게 되면 to가 나오는 것이죠. tea와 ten은 t도 똑같고, e도 똑같습니다. 따라서 t노드 밑에 e노드가 있고, e노드 밑에 a와 n으로 나뉘는 것이죠. 이런식으로 문자열을 저장해두고, 찾을 때는 금방 찾게 만든 자료구조가 Trie 입니다. 파이썬으로 ..

자료구조 2022.07.06

스택과 데크(deque)

안녕하세요 Dibrary입니다. 이번에 소개할 자료구조는 스택 입니다. 연결 리스트보다 어찌보면 간단한? 자료구조입니다. (이해하기는 굉장히 쉬운데 실제 쓰임새는 연습하지 않고는 떠오르지 않는 괴랄한... ) 스택의 특징은 딱 하나 입니다 LIFO (LAST에 IN 한 데이터가 FIRST로 OUT 한다) 이거 한 개만 아셔도 스택 개념의 절반은 먹고 들어간다~ 이거죠. 스택은 반드시 LIFO만 유지되면 됩니다. 그럼 여기서 LAST에 IN한 다는 의미와 FIRST로 OUT한다는 의미가 무엇인가 코드로 살펴보겠습니다. (물론 파이썬으로요) 임의로 stack이라는 이름의 list를 만들어 보았습니다. 1, 2, 3을 순서대로 넣고 확인해 보니 순서대로 들어갔네요. pop을 하니까 맨 마지막에 넣은 3이 제일..

자료구조 2022.06.03

연결리스트 - 이중 연결 리스트

안녕하세요 Dibrary입니다. 앞에서 단일연결 리스트를 보셨다면, '역순으로도 확인할 수 있으면 좋겠다~' 싶은 생각이 드셨을 수 있는데, 이 기능도 같이 구현한 것이 이중연결 리스트 입니다. 2022.05.17 - [자료구조] - 연결리스트 - 단순 연결 리스트 이렇게 양방향 화살표인 셈이죠. 근데, 사실 '개념'은 이래도, 양방향으로는 각 Node별로 앞, 뒤가 나뉘어져 있습니다. 따라서, 아래와 같이 표현하는 게 좀 더 정확합니다. 그래도 앞에서 뒤로, 뒤에서 앞으로 올 수 있다는 사실은 변함이 없습니다. 이번에도 파이썬으로 코드 구현을 해보겠습니다. 먼저 노드만을 만들어 보고 기본 개념 확인을 해보겠습니다. A와 B와 C라는 노드를 만들고, A B C 이렇게 연결 했습니다. A부터 C까지 값을 ..

자료구조 2022.05.26

연결리스트 - 단순 연결 리스트

안녕하세요 Dibrary입니다. 이번에 정리해볼 자료구조는 리스트 입니다. 일반적으로 리스트란 일련의 동일한 타입의 항목을 의미. 뭔 소리냐하믄, 비슷한 것을 줄줄이 소세지 마냥 엮어 놓은 것이라 보면 됩니다. 근데 우리는 이미 비슷한 자료구조를 알고 있죠? 배열. 배열과의 차이는 뭘까요? 배열은 데이터가 연속으로 위치해 있고, 리스트는 그럴수도 있고 아닐수도 있다는 것입니다. 리스트를 잘 보시면 군데군데 꼭 붙어있지 않더라도 연결을 해서 하나의 '배열 처럼' 만들었죠? 이렇게 떨어진 곳의 데이터를 하나의 '배열 처럼' 다루고자 하는 것이 리스트 자료구조 입니다. 보면 데이터 1개마다 1개의 화살표로 다음 데이터를 이어줬는데 한 방향입니다. 이렇게 만든 것이 단순연결리스트 이고,이 화살표가 양방향이라면 ..

자료구조 2022.05.17
반응형