본문 바로가기

자료구조13

Python 자료구조 & 알고리즘 - 재귀호출 1. 재귀호출(recusive call) 함수 안에서 동일한 함수를 호출하는 형태 여러 알고리즘, 고급 정렬 알고히즘 작성시 자주 사용됨 1-1. 재귀 호출 분석 2! = 1 * 2 3! = 1 * 2 * 3 4! = 1 * 2 * 3 * 4 = 3! * 4 1-2. 규칙 n! = n * (n-1)! 함수로 만들어 보자 함수(n)은 n=1 함수(n)은 n>1 이면 return n*함수(n-1) 1-3. 검증 2! 함수(2)이면 2>1 이므로 2 * 함수(1) 함수(1)은 1이므로 return 2 * 1, 답은 2 3! 함수(3)이면 3>1 이므로 3 * 함수(2) 함수(2)는 위 계산에 의해 2! 이므로 return 2*1 = 2 3 * 함수(2) = 3 * 2 = 3 * 2 * 1, 답은 6 4! 함수.. 2023. 2. 21.
Python 자료구조 & 알고리즘 - 정렬(버블, 삽입, 선택) 1. 정렬 어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 것 프로그램 개발 시 빈번하게 정렬을 필요로 함 다양한 알고리즘이 고안되었으며 알고리즘 학습의 필수사항 2. 버블 정렬(bubble sort) 두 인접한 데이터를 비교해서 앞에있는 데이터가 뒤에 있는 데이터보다 크면 (작으면) 자리를 바꾸는 정렬 알고리즘 3. 삽입 정렬(insertion sort) 인덱스(key)앞에 있는 데이터(A)부터 비교해서 key가 더 작으면(크면) 데이터(A)값을 뒤 인덱스로 복사 key가 더 큰 데이터를 만날 때까지 반복 큰 데이터를 만난 위치 바로 뒤에 key를 이동 4. 선택 정렬(selection sort) 주어진 데이터 중, 최소값을 찾음 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함 맨 앞의 위.. 2023. 2. 21.
Python 자료구조 & 알고리즘 - 복잡도 1. 알고리즘 복잡도 표현방법 1-1. 알고리즘 복잡도 계산이 필요한 이유 하나의 문제를 푸는 알고리즘은 다양함 * 정수의 절대값을 구하는 방법 * 방법1 : 값이 음수인지 확인해서 0보다 작은 음수일 때 -1을 곱하기 * 방법2 : 정수값을 재곱한 값에 루트를 씌우기 디양한 알고리즘 중 어떤 알고리즘이 더 좋은지 분석하기 위해 복잡도를 정의하고 계산함 1-2. 알고리즘 복잡도 계산 항목 공간 복잡도 : 알고리즘이 사용하는 메모리 사이즈 시간 복잡도 : 알고리즘 실행 속도 1-3. 알고리즘 성능 표기법 오메가 표기법 알고리즘 최상의 실행 시간을 표기 세타 표기법 알고리즘 평균 실행시간을 표기 빅오 표기법 최악의 실행 시간을 표기 아무리 최악의 상황이라도 이 정도의 성능은 보장함을 의미 가장 많이 사용 1.. 2023. 2. 20.
Python 자료구조&알고리즘 - 트리(Tree), 이진 탐색 1. 트리(Tree) Node와 Branch를 이용해서 사이클을 이루지 않도록 구성한 데이터 구조 트리중 이진 트리(Binary Tree)형태의 구조로 탐색(검색)알고리즘을 구현을 위해 많이 사용됨 2. 알아둘 용어 Node: 트리에서 데이터를 저장하는 기본 요소(데이터와 다른 연결된 노드에 대한 Branch 정보를 포함) Root Node: 트리 맨 위에 있는 노드 Level: 최상위 노드를 Level 0으로 했을 때 하위 Branch로 연결된 노드의 깊이를 나타냄 Parent Node: 어떤 노드의 상위 레벨에 연결된 노드 Child Node: 어떤 노드의 하위 레벨에 연결된 노드 Leaf Node: Child Node가 하나도 없는 노드 Sibling Node: 동일한 Parent Node를 가진 .. 2023. 1. 31.