본문 바로가기

반응형

자료구조

(3)
[Python] 백준(BOJ) - 5567 결혼식 필자는 거의 항상 코딩 테스트, 혹은 알고리즘 문제 풀이를 파이썬으로 한다. 대체로 코딩 테스트는 C++로 하라고 하지만... 필자가 일하고자 하는 직무가 인공지능, 빅데이터 쪽이기도 하고, C, C++은 임베디드 하면서도 자주 접하기 때문에 지식의 반경을 넓히고자 하는 욕심도 있기 때문이다. 이번 알고리즘 풀이 첫 문제는, 백준 온라인 저지의 5567번 문제 결혼식이다. 정답률도 41% 정도의 쉬운 문제지만, 이 문제를 처음으로 올리는 이유는, 필자가 처음으로(부끄럽다...) 랭크에 올라봤기 때문이다. 한 번 바로 살펴보자. 소스 코드 #BOJ 5567 결혼식 (Graph) import sys input = sys.stdin.readline n = int(input()) m = int(input()) ..
[Python] 더블 링크드 리스트 (이중 연결 리스트) 싱글 링크드 리스트를 배웠으면 더블 링크드 리스트를 빼먹을 수 없다. (만약 지난 싱글 링크드 리스트가 궁금하다면? 2019/11/29 - [IT/자료구조] - [Python] 싱글 링크드 리스트 (단순 연결 리스트)) 이 또한 워낙 방대한 자료가 많지만, 추후 그래프나 트리 구현을 할 때 제반 지식이 될 수 있도록 꼭 구현해보는 것을 추천한다. 기초적인 지식 1. 시간복잡도 Double Linked List 최선 최악 삽입 O(1) O(1) 삭제 O(1) O(1) 탐색 O(k) O(k) [인덱스 탐색 시] O(N) [값 탐색 시] 이전 포스트였던 싱글 링크드 리스트와는 다른 점이 있다면 탐색이다. 그리고 지난 싱글 링크드 리스트와 함정 또한 공유한다. 2. 장점 싱글 링크드 리스트와 모든 장점을 공유한..
[Python] 싱글 링크드 리스트 (단순 연결 리스트) 아마 자료구조를 공부하면 처음 구현하게 될 싱글 링크드 리스트. 워낙 자료도 방대하고 기구현된 소스코드가 많지만, 그만큼 기초는 중요하기에 직접 구현하면서 지식을 익혀보는 것이 낫다. 개인적인 생각이지만, 아주 기초적인 노드의 활용 방식을 몸소 익힐 수 있다는 점만으로도 단순 연결 리스트의 구현은 해볼 가치가 있다고 생각한다. 기초적인 지식 1. 시간복잡도 Single Linked List 최선 최악 삽입 O(1) O(1) 삭제 O(1) O(1) 탐색 O(k) O(N) ※ 단, 함정 있음. (아래 단점 항목 참고) 2. 장점 삽입과 삭제가 O(1)에 이루어진다. 삽입과 삭제를 할 때마다 동적으로 링크드 리스트의 크기가 결정되므로 전통적인 배열(Array)에 비해 처음부터 큰 공간을 할당할 필요가 없어진다..

반응형