본문 바로가기
728x90
[알고리즘] 추가 학습 자료 및 연습 문제 추가 학습 자료온라인 강의 및 코스Coursera: "Algorithms, Part I & II" by Princeton UniversityPart IPart IIedX: "Algorithm Design and Analysis" by MITCourse LinkUdacity: "Data Structures and Algorithms" Nanodegree ProgramCourse Link추천 서적"Introduction to Algorithms" by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein"Algorithm Design Manual" by Steven S. Skiena"Data Structures and Alg.. 2024. 6. 2.
[알고리즘] Week 12: 종합 실습 및 프로젝트 Day 1: 종합 실습 - 탐색 알고리즘강의 내용:이진 탐색 트리 (Binary Search Tree)삽입, 삭제, 탐색 연습깊이 우선 탐색 (DFS)와 너비 우선 탐색 (BFS)그래프 탐색 알고리즘 복습 및 연습실습:이진 탐색 트리 및 그래프 탐색 알고리즘 구현 및 문제 풀이# 이진 탐색 트리의 삽입, 삭제, 탐색 연습class BSTNode: def __init__(self, key): self.left = None self.right = None self.val = keydef insert(root, key): if root is None: return BSTNode(key) else: if root.val  Day 2:.. 2024. 6. 2.
[알고리즘] Week 11: 그래프 알고리즘 II - 최단 경로 알고리즘과 최소 스패닝 트리 Day 1: 최단 경로 알고리즘 개요강의 내용:최단 경로 문제 정의최단 경로 문제란 무엇인가?단일 출발점 최단 경로와 모든 쌍 최단 경로 문제의 차이최단 경로 알고리즘의 응용 사례네비게이션 시스템네트워크 라우팅실습:최단 경로 문제를 해결할 기본적인 그래프 준비# 기본적인 그래프 준비graph = { 'A': {'B': 1, 'C': 4}, 'B': {'A': 1, 'C': 2, 'D': 5}, 'C': {'A': 4, 'B': 2, 'D': 1}, 'D': {'B': 5, 'C': 1}} Day 2: 다익스트라 알고리즘 (Dijkstra's Algorithm)강의 내용:다익스트라 알고리즘의 개념다익스트라 알고리즘의 정의 및 작동 원리우선순위 큐를 이용한 구현다익스트라 알고리즘의 시간.. 2024. 6. 2.
[알고리즘] Week 10: 그래프 알고리즘 I - 개념과 탐색 알고리즘 Day 1: 그래프의 개념과 용어강의 내용:그래프의 정의와 중요성그래프란 무엇인가?그래프의 실생활 응용 사례 (소셜 네트워크, 지도, 인터넷 등)그래프의 기본 용어정점(Vertex)와 간선(Edge)방향 그래프(Directed Graph)와 무방향 그래프(Undirected Graph)가중치 그래프(Weighted Graph)와 비가중치 그래프(Unweighted Graph)인접 정점(Adjacent Vertices), 경로(Path), 차수(Degree)그래프의 종류유향 그래프와 무향 그래프연결 그래프와 비연결 그래프사이클(Cycle)과 비사이클(Acyclic)실습:파이썬을 사용한 그래프의 기본 구조 생성# 무방향 그래프의 예제 구현class Graph: def __init__(self): .. 2024. 6. 2.
[알고리즘] Week 9: 그리디 알고리즘 - 개념과 예제 Day 1: 그리디 알고리즘의 개념강의 내용:그리디 알고리즘의 정의와 중요성그리디 알고리즘(Greedy Algorithm)이란 무엇인가?그리디 알고리즘의 기본 원리 (국소 최적해 선택)그리디 알고리즘의 장점 및 활용 사례그리디 알고리즘의 장단점장점: 간결하고 이해하기 쉬움, 빠른 실행 시간단점: 항상 전역 최적해를 보장하지 않음실습:간단한 그리디 알고리즘 문제 예제 설명# 동전 교환 문제의 간단한 그리디 알고리즘 예제def coin_change_greedy(coins, amount): coins.sort(reverse=True) result = [] for coin in coins: while amount >= coin: amount -= coin .. 2024. 6. 2.
[알고리즘] Week 8: 동적 프로그래밍 - 개념과 예제 Day 1: 동적 프로그래밍의 개념강의 내용:동적 프로그래밍의 정의와 중요성동적 프로그래밍(DP)이란 무엇인가?동적 프로그래밍의 기본 원리 (중복 부분 문제, 최적 부분 구조)동적 프로그래밍의 장점 및 활용 사례동적 프로그래밍과 분할 정복의 차이메모이제이션 (Top-down) vs. 테이블화 (Bottom-up)실습:간단한 동적 프로그래밍 문제 예제 설명# 피보나치 수열의 메모이제이션을 사용한 동적 프로그래밍 예제def fibonacci_memo(n, memo={}): if n in memo: return memo[n] if n  Day 2: 피보나치 수열 (Bottom-up 방식)강의 내용:Bottom-up 방식의 개념테이블화 방법 (Bottom-up) 소개피보나치 수열의 Bot.. 2024. 6. 2.
[알고리즘] Week 7: 분할 정복 알고리즘 - 개념과 예제 Day 1: 분할 정복의 개념강의 내용:분할 정복의 정의와 중요성분할 정복이란 무엇인가?분할 정복 알고리즘의 기본 원리 (분할, 정복, 합병)분할 정복의 장점 및 활용 사례분할 정복의 장단점문제를 더 작은 부분 문제로 나누어 해결재귀적 접근과 비교했을 때의 장점실습:간단한 분할 정복 알고리즘 예제 설명# 분할 정복의 간단한 예제: 배열의 최대값 찾기def find_max(arr, low, high): if low == high: return arr[low] mid = (low + high) // 2 max1 = find_max(arr, low, mid) max2 = find_max(arr, mid + 1, high) return max(max1, max2)# 예제 .. 2024. 6. 2.
[알고리즘] Week 6: 재귀 알고리즘 - 개념과 예제 Day 1: 재귀의 개념강의 내용:재귀의 정의와 중요성재귀란 무엇인가?재귀 함수의 기본 구조 (기저 조건과 재귀 호출)재귀 알고리즘의 중요성 및 활용 사례재귀의 장단점재귀의 장점 (간결함, 특정 문제에 대한 자연스러운 표현)재귀의 단점 (성능 문제, 스택 오버플로우 위험)실습:간단한 재귀 함수 작성 및 실행# 재귀 함수의 기본 예제: 1부터 n까지의 합 계산def recursive_sum(n): if n == 1: return 1 else: return n + recursive_sum(n - 1)# 예제 실행print("1부터 5까지의 합:", recursive_sum(5)) # 15 Day 2: 팩토리얼 계산강의 내용:팩토리얼의 개념팩토리얼의 정의 (n! = n *.. 2024. 6. 2.
[알고리즘] Week 5: 탐색 알고리즘 II - 이진 탐색 트리 및 균형 트리 Day 1: 이진 탐색 트리 (Binary Search Tree)강의 내용:이진 탐색 트리의 개념이진 탐색 트리의 정의 및 특징이진 탐색 트리의 시간 복잡도 분석 (평균 O(log n), 최악 O(n))이진 탐색 트리의 주요 연산삽입, 삭제, 탐색실습:이진 탐색 트리 구현 및 기본 연산# 이진 탐색 트리 노드 클래스 정의class TreeNode: def __init__(self, key): self.left = None self.right = None self.val = key# 이진 탐색 트리 삽입 함수 정의def insert(root, key): if root is None: return TreeNode(key) else: .. 2024. 6. 2.
[알고리즘] Week 4: 탐색 알고리즘 I - 탐색 개념 및 기본 알고리즘 Day 1: 탐색의 개념강의 내용:탐색의 정의와 중요성탐색이란 무엇인가?탐색의 필요성탐색 알고리즘의 실제 응용 사례탐색 알고리즘의 분류선형 탐색이진 탐색실습:파이썬 내장 탐색 함수 사용해보기# 파이썬 내장 탐색 함수 예제data = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]print("데이터에서 5의 인덱스:", data.index(5))print("데이터에서 2의 존재 여부:", 2 in data) Day 2: 선형 탐색 (Linear Search)강의 내용:선형 탐색의 개념선형 탐색의 정의 및 작동 원리시간 복잡도 분석 (O(n))선형 탐색의 장단점단순하고 이해하기 쉬움큰 데이터셋에서는 비효율적실습:선형 탐색 알고리즘 구현 및 예제# 선형 탐색 알고리즘 구현def linear_sea.. 2024. 6. 2.
반응형