학사/아주대 융시공
[2학년][2학기][자료구조및알고리즘][2w]
jaeseokk963
2023. 9. 8. 22:16
녹화 강의를 듣고 줌 수업을 진행했다
별 내용은 없었다
아래는 줌 수업 들으면서 정리한 내용
맨 밑에 구현해보기랑 실습하기는 정리해서 올려야겠
학습 목표
기본 자료 구조인 배열(array)과 연결리스트(linked list)의 개념을 이해하고 python으로 구현하는 방법을 학습한다.
기본 데이터 구조의 개념
- 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적 관계
- 컴퓨터에서 처리해야하는 많은 데이터를 모아 효율적으로 관리 및 구조화하기 위해 사용
Linear 자료구조 | 순서가 정해져있는 자료구조 순차적으로 데이터에 접근 | Array. Linked List, Stack, Queue |
Non Linear 자료구조 | 순서에 상관없이 데이터를 저장 기본 자료구조를 다양하게 적용하여 표현 데이터에 접근하기 위해 규칙이 있어야 함 | Tree, Graph |
Stack, Queue, Tree, Graph는 기본 자료구조(Array, Linked List)를 활용하여 구현 가능
Array 개념
Array
- 일련의 순서로 데이터를 저장(순차적)
- 일련의 번호와 번호에 대응하는 데이터로 이루어진 자료구조
- 쉽고 사용이 편함
- 메모리 효율성이 낮음
- 데이터 접근이 빠름
Element(원소)
- Array에 저장된 객체
- 각 원소는 0, 1, 2 순으로 index를 받음
- Data Type은 상관없음(int, float 등)
- 서로 다른 자료형을 같이 저장 가능
Python 자료형
- Mutable 자료형: List, Dictionary, Set → 값 변경 가능
- Immutable 자료형: Number, Char, Tuple → 값 변경 불가
Linked List
Pointer
- 다음 또는 이전의 노드와의 연결(주소값)을 담당
Linked List
- 노드(데이터, 포인터)가 한 줄로 연결되어 있는 방식
- 개념이 복잡하고 구현이 어려움
- 메모리 사용 효율성이 높음
- 데이터 접근이 느림
- 단일 연결 리스트 / 이중 연결 리스트 / 원형 연결 리스트
List vs Array
List in python | Array |
다양한 종류의 데이터를 담을 수 있음 반복문으로 연산을 수행하기에 상대적으로 수행속도 느림 연산 처리 시 전체 리스트로 연산 | 동일한 종류의 데이터만 담을 수 있음 연속된 메모리에 데이터를 저장 간단한 연산 처리가 가능하고 수행 속도 빠름 연산 처리 시 각 요소별로 연산 |
1차원 Array 값 추가 / 삭제
- 추가: append / insert
- 삭제: del / pop / remove
(구현해보기)
Copy와 Deep Copy
: 주소를 가리키는 것과 값만 복사
(조사해보기)
Any와 Sequence
(조사해보기) 실습 #1
실습1,2,3 하기
실습a: python으로 array 만들고 데이터 저장 및 삭제해보기
실습b: python으로 linked list 만들고 데이터 access(simple linked list)