패스트캠퍼스 환급챌린지 10일차 : Part1 딥러닝을 시작하기전에 강의 후기
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스
성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.
fastcampus.co.kr
Ch02-01 자료구조
1) 자료 구조의 정의
- 다수의 자료를 담기 위한 구조로, 데이터의 수와 크기가 커질 수록 효율적인 자료구조가 필요함
2) 자료 구조의 종류
- 선형 구조 : 배열, 연결 리스트, 스택, 큐, 덱과 같이 하나의 데이터 뒤에 다른 데이터가 하나 존재하며, 일렬로 연속적, 순차적으로 연결되어있는 데이터구조를 말함
- 비선형 구조 : 트리, 그래프와 같이 하나의 데이터 뒤에 다른 데이터가 다수 존재할 수 있는 데이터 구조를 말함
3) 자료 구조의 성능 측정 방법
- 시간 복잡도 : 알고리즘에 사용되는 연산 횟수를 측정
- 공간 복잡도 : 알고리즘에 사용되는 메모리양을 측정
4) 빅오 표기법
- 복잡도를 표현할 때 사용하는 방법으로, 시간 복잡도를 표기할 때 큰 항의 계수만 표기 (3n + 2) => O(n) 으로 표기함
- 공간을 나타낼 때는 MB로 표기
Ch02-02/03 배열, 연결리스트
1) 배열
- 여러개의 변수를 담는 공간으로 메인 메모리에 배열은 연속적으로 할당 됨
- 장점
: 캐시히트 가능성이 높고, 데이터의 조회가 빠름
- 단점
: 배열의 크기를 미리 지정하기 때문에, 데이터의 추가 삭제시에 부하가 발생함
2) 연결 리스트
- 데이터와 포인트를 하나의 노드로 정의하고, 각 노드를 포인터를 통해 연결하는 형태의 자료구조
- 장점
: 데이터의 추가 삭제가 용이
- 단점
: 데이터를 조회할 때는 첫 노드부터 시작하여 조회할 노드까지 선형 탐색을 하기 때문에 O(n)만큼의 시간이 필요
Ch2-04 파이썬의 리스트
- 파이썬의 리스트는 동적 배열이고, 내부적으로는 포인터를 사용하여 연결리스트의 장점을 가지고 있음
Method | 시간 복잡도 | 설명 |
arr[index] | O(1) | 리스트에서 인덱스에 해당되는 데이터 가져오기 |
arr[index]=x | O(1) | 리스트에서 인덱스에 값 할당 |
arr.append(x) | O(1) | 리스트에 뒤에 데이터 넣기 |
arr.pop() | O(1) | 리스트에 가장 뒤에 데이터 가져오기 |
length() | O(1) | 리스트에 길이 가져오기 |
clear() | O(1) | 리스트 모든 원소 제거 |
arr[a:b] | O(b-a) | 리스트에서 a~b-1까지의 데이터로 새로운 리스트 생성 |
arr.extend(arr2) | O(len(arr2)) | arr2에 데이터를 arr1에 추가하기 |
arr.insert(index,x) | O(n) | arr에 index위치에 x 데이터 추가 |
arr.delete(index) | O(n) | arr에 index위치 삭제 |
arr = list(arr2) | O(len(arr2)) | arr2로 리스트 생성 |
x in arr | O(n) | arr에 x가 있는지 확인 |
x not in arr | O(n) | arr에 x가 없는지 확인 |
arr.pop(index) | O(n) | arr에서 index에 있는 데이터 꺼내기 |
arr.remove(x) | O(n) | arr에서 x의 값 제거 |
arr.copy | O(n) | arr 리스트 복사하기 |
min(arr),max(arr) | O(n) | arr에서 최소, 최대 값 가져오기 |
for x in arr | O(n) | 리스트 순회 |
arr * k | O(n * k) | 리스트를 k번 반복하여 리스트 생성 |
arr.sort | O(n) | 리스트 원소 정렬 |



