Loading [MathJax]/jax/output/CommonHTML/jax.js
반응형

코딩 7

7강. 그리디 알고리즘

7. 그리디 알고리즘7.1 그리디 알고리즘의 개념그리디 알고리즘(Greedy Algorithm)그리디 알고리즘은 현재 상황에서 가장 좋아 보이는 선택을 반복적으로 해 나가면서 최적해를 찾아가는 알고리즘입니다. 이 알고리즘은 각 단계에서 최선의 선택을 하는 것이 전체 문제에 대한 최적해를 보장한다는 전제하에 작동합니다.그리디 알고리즘의 시간 복잡도는 일반적으로 문제의 구조에 따라 달라집니다. 예를 들어, 선택 정렬은 O(n2)의 시간 복잡도를 가지지만, 동전 교환 문제는 O(n) 또는 O(logn)의 시간 복잡도를 가질 수 있습니다.그리디 알고리즘은 주로 최단 경로, 최소 신장 트리, 작업 스케줄링 문제 등에서 많이 사용됩니다.그리디 알고리즘의 역사는 1950년대와 1960년대에..

6강. 동적 계획법과 분할 정복

6. 동적 계획법과 분할 정복6.1 동적 계획법의 기초동적 계획법(Dynamic Programming)동적 계획법은 1950년대에 리처드 벨먼(Richard Bellman)이 개발한 알고리즘 기법으로, 복잡한 문제를 작은 하위 문제로 나누어 해결하는 방법입니다. 하위 문제의 해결 결과를 저장하여 같은 문제를 반복해서 풀지 않도록 하여 효율성을 높입니다.동적 계획법의 시간 복잡도:- 동적 계획법의 시간 복잡도는 일반적으로 문제의 크기와 하위 문제의 수에 따라 다르며, 중복 계산을 피하기 때문에 재귀적인 접근 방식보다 효율적입니다.동적 계획법은 주로 최적화 문제에서 사용되며, 예제 문제로는 피보나치 수열, 배낭 문제 등이 있습니다. 이 기법은 "한 번 계산한 것은 다시 계산하지 않는다"는 원칙을 따릅니다./..

5강. 고급 데이터 구조

5. 고급 데이터 구조5.1 AVL 트리와 레드-블랙 트리AVL 트리(AVL Tree)AVL 트리는 1962년 Georgy Adelson-Velsky와 Evgenii Landis에 의해 소개된 이진 탐색 트리로, 모든 노드의 균형을 유지하기 위해 각 노드의 왼쪽 서브트리와 오른쪽 서브트리 높이 차이가 최대 1이 되도록 유지합니다. 삽입 또는 삭제 후에 균형을 맞추기 위해 회전 연산을 수행합니다.AVL 트리의 시간 복잡도:- 삽입, 삭제, 검색: O(logn)트리의 높이가 O(logn)이므로, 삽입, 삭제, 검색 모두 O(logn) 시간이 소요됩니다.// AVL 트리 예시 (간단한 노드 회전 예제 포함)class AVLNode { int key, height; A..

4강. 검색알고리즘

4. 검색 알고리즘4.1 선형 검색선형 검색(Linear Search)선형 검색은 1950년대 초기에 처음 사용된 가장 기본적인 검색 알고리즘 중 하나입니다. 배열이나 리스트의 첫 번째 요소부터 마지막 요소까지 순차적으로 비교하여 원하는 값을 찾는 방식입니다.선형 검색은 정렬되지 않은 배열이나 리스트에서 사용할 수 있는 가장 단순한 검색 방법입니다.선형 검색의 시간 복잡도:- 최악의 경우: O(n)배열의 마지막 요소까지 탐색해야 하는 경우, 모든 요소를 확인해야 하므로 O(n)의 시간이 소요됩니다.자바에서 선형 검색을 구현하려면, 배열과 반복문에 대한 기본적인 이해가 필요합니다. 배열은 연속된 메모리 공간에 요소들을 저장하며, 반복문은 배열의 각 요소를 순차적으로 탐색하는 데 사용됩니다./..

3강. 정렬 알고리즘

3. 정렬 알고리즘3.1 버블 정렬버블 정렬(Bubble Sort)버블 정렬은 1956년에 제어 장치 프로그래머 존 코너(John von Neumann)에 의해 처음 소개된 단순한 정렬 알고리즘입니다. 버블 정렬은 인접한 두 요소를 비교하여 정렬하는 방식으로, 가장 큰 요소가 매 반복(iteration)마다 배열의 끝으로 "거품처럼" 떠오르는 방식입니다.버블 정렬의 시간 복잡도:- 최악의 경우: O(n2)배열이 역순으로 정렬된 경우, 모든 요소를 반복적으로 비교해야 하기 때문에 최악의 경우 O(n2)의 시간이 소요됩니다.- 최선의 경우: O(n)배열이 이미 정렬된 경우, 한 번의 패스만 필요하므로 O(n)의 시간이 소요됩니다.// 버블 정렬 예시public class Bu..

2강. 기본 데이터 구조

2. 기본 데이터 구조2.1 배열과 연결 리스트배열(Array)배열은 동일한 타입의 요소들이 연속적으로 저장되는 데이터 구조입니다. 배열은 인덱스를 이용해 요소에 접근할 수 있으며, 고정된 크기를 가집니다. 배열의 시간 복잡도:- 접근: O(1)배열은 인덱스를 통해 직접 접근할 수 있어, 접근 시간은 배열의 크기에 상관없이 일정합니다.- 탐색: O(n)배열에서 특정 값을 찾기 위해서는 배열의 모든 요소를 확인해야 하므로, 최악의 경우 모든 요소를 확인해야 합니다.- 삽입/삭제: O(n)배열에서 요소를 삽입하거나 삭제하려면 해당 위치 이후의 모든 요소를 이동시켜야 하기 때문에, 최악의 경우 배열의 모든 요소를 이동시켜야 합니다.연결 리스트(Linked List)연결 리스트는 각 요소가..

1강. 알고리즘 소개

1. 알고리즘 소개1.1 알고리즘의 정의와 중요성알고리즘의 정의알고리즘(Algorithm)은 문제를 해결하기 위해 정해진 일련의 절차나 규칙의 집합입니다. 쉽게 말해, 알고리즘은 특정 문제를 해결하는 데 필요한 단계별 과정입니다.알고리즘은 컴퓨터 과학의 핵심 요소로, 문제를 효율적으로 해결하는 방법을 제공합니다. 예를 들어, 데이터 정렬, 검색, 최적화 문제 등을 해결하기 위해 다양한 알고리즘이 사용됩니다.역사적 배경알고리즘이라는 용어는 페르시아의 수학자 알-콰리즈미(Al-Khwarizmi)의 이름에서 유래되었습니다. 그는 9세기 초에 산술 연산 방법을 체계화한 책을 썼습니다. 이 책은 유럽에 전파되어 알고리즘이라는 용어의 기초가 되었습니다.현대 컴퓨터 과학에서 알고리즘의 중요성은 앨런 튜링(Alan T..

반응형