💡Today I Learned
- 자료구조/알고리즘에 대한 첫번째 이론 및 실습 강의를 진행했습니다.
- 배열 / 정렬, 탐색, 재귀 알고리즘 / 알고리즘의 복잡도 관련 이론
- 리스트, 탐색, 재귀 알고리즘에 관한 실습 문제 풀이
1. 자료구조 & 알고리즘
- 자료구조 = data + data에 대해 행할 수 있는 연산
- 알고리즘: 주어진 문제를 해결하기 위한 자료구조와 연산 방법을 선택
- ex) List 내 특정 item을 찾을 때 → 정렬된 List에서 item을 찾는 것이 효율적 → 순서가 정렬된 자료구조가 좋겠음
2. 선형 배열
- 원소들을 순서대로 늘어놓은 것
- 0-based indexing
- (in python) List는 여러 타입의 자료를 함께 저장 가능
- 리스트 중간의 원소 삭제 방법 간 차이
- del(L[idx]): 리스트 아이템 삭제
- L.pop(idx): 삭제할 아이템 return & 삭제
3. 정렬
- 리스트 정렬 방법 간 차이
- sorted(): 내장함수, 정렬된 새로운 리스트 return (원본 리스트의 변화 x)
- sort(): 리스트의 메소드, 메소드를 호출한 해당 리스트를 정렬함 (원본 리스트의 변화 o)
- 정렬에 사용될 키 지정: key = lambda x: 매개변수 x에 대한 람다 함수로 구현
4. 탐색
- 선형 탐색(linear search): O(N)
- 이진 탐색(binary search): O(logN), 탐색하려는 리스트가 이미 정렬돼있는 경우만 적용 가능
5. 재귀함수
- ex) 이진 트리, 조합의 수, 피보나치 수열 etc..
- 재귀 알고리즘 내 종결 조건이 반드시 필요
6. 알고리즘 복잡도
- Big-O notation: 입력 크기 N에 비례하는 알고리즘의 시간 소요, 계수는 중요하지 x (ex: O(kN^2) == O(N^2))
- 삽입 정렬(insertion sort): O(N^2)
- 병합 정렬(merge sort): O(N*logN)
📒 Furthermore
- 피보나치 수열 반복문으로 구현하기
- '하노이의 탑' 재귀 함수로 풀이
반응형
'데브코스 > TIL' 카테고리의 다른 글
[TIL] 3주차_Day6: 파이썬 웹 크롤링(1) (0) | 2023.10.24 |
---|---|
[TIL] 2주차_Day5: 자료구조/알고리즘 풀기(5) (1) | 2023.10.20 |
[TIL] 2주차_Day4: 자료구조/알고리즘 풀기(4) (0) | 2023.10.19 |
[TIL] 2주차_Day3: 자료구조/알고리즘 풀기(3) (1) | 2023.10.18 |
[TIL] 2주차_Day2: 자료구조/알고리즘 풀기(2) (1) | 2023.10.17 |