Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 비용이슈
- Selenium
- 지연평가
- re.compile
- 병렬처리
- simple-regression model
- chirpy
- list
- LinkedLists
- beatuifulsoup4
- 깃헙 블로그 오류
- 다중 선형 회귀
- 벌크업데이트
- 넓이 우선 순회
- 정규표현식
- 정규표현식 조건문
- 평가지표
- ChatGPT
- 2023운전면허
- 통계학
- ruby error
- reverse_lazy
- AWS
- 파이썬
- Python
- de
- githubblog
- re
- GPT-4
- 중복성검사
Archives
- Today
- Total
용사냥꾼69
파이썬 연결 리스트(Linked Lists)는 왜, 언제 쓰는가? 본문
728x90
장점
파이썬에서 연결 리스트는 다음과 같은 이유로 사용됩니다.
- 동적 크기: 연결 리스트는 동적으로 크기를 조절할 수 있으므로, 배열과 달리 사전에 크기를 지정할 필요가 없습니다. 이로 인해 메모리 할당과 관리가 효율적입니다.
- 삽입 및 삭제의 효율성: 연결 리스트에서는 노드를 삽입하거나 삭제할 때 포인터를 업데이트하기만 하면 되므로, 이러한 작업의 시간 복잡도는 O(1)입니다. 그러나 배열에서는 요소를 삽입하거나 삭제할 때, 다른 요소들을 이동해야 하므로 시간 복잡도가 O(n)입니다.
- 메모리 최적화: 연결 리스트는 포인터를 통해 메모리의 불연속적인 영역을 참조할 수 있습니다. 이는 메모리를 효율적으로 사용할 수 있게 해주며, 배열과 달리 연속적인 메모리 공간이 필요하지 않습니다.
단점
하지만 연결 리스트는 몇 가지 단점도 가지고 있습니다:
- 메모리 오버헤드: 연결 리스트는 각 노드에 대한 추가적인 포인터 정보를 저장해야 하므로 메모리 오버헤드가 발생합니다.
- 무작위 접근의 비효율성: 연결 리스트에서 특정 인덱스의 요소에 접근하려면, 리스트의 처음부터 순차적으로 탐색해야 합니다. 이로 인해 배열에 비해 무작위 접근 성능이 떨어집니다.
연결 리스트는 다음과 같은 상황에서 사용하기 적합합니다:
- 자료 구조의 크기를 사전에 알 수 없거나, 동적으로 크기가 변경되는 경우
- 삽입 및 삭제 작업이 빈번하게 발생하는 경우
- 메모리 할당 및 관리에 대한 최적화가 필요한 경우
연결 리스트의 이러한 특성을 고려하여, 상황에 따라 적절한 자료 구조를 선택하는 것이 중요합니다.
모든 알고리즘과 자료구조의 구현 자체는 굉장히 다양한 자료를 참고하여 구현할 수 있으므로, 해당 자료 구조가 더 좋은 상황에 대해서 생각하고 무엇보다도 테스트와 디버깅을 통해서 더 나은 경우를 구별할 수 있으면 된다고 생각합니다.
'파이썬 > 코딩테스트' 카테고리의 다른 글
해시 테이블(Hash Table)과 파이썬 카운터(Counter) (0) | 2023.04.13 |
---|---|
넓이 우선 순회(breadth first traversal) 에서의 큐(Queue) 사용에서 알 수 있는 여러 자료구조의 활용 (1) | 2023.04.12 |
f-string, 포맷코드에 대해서(파이썬 유저 거의 대부분 모름) (1) | 2023.04.11 |
이진탐색 알고리즘은 어디에? 왜? 쓰는가 (0) | 2023.04.10 |
파이썬 리스트에서 del과 pop의 차이 (0) | 2023.04.10 |
Comments