이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다. 그리디 알고리즘에서 그리디란 탐욕이라는 영어 단어입니다. 탐욕이라는 의미는 욕심이 많고, 놀부같다는 생각이 들지도 모르겠습니다만, 그리디 알고리즘에서의 탐욕은 그렇게 부정적인 의미가 아닙니다. 그렇다면 본격적으로
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다. 다이나믹 프로그래밍은 동적 계획법이라고도 합니다. 다이나믹 프로그래밍을 이해하기 위해서는 동적 할당(Dynamic Allocaion)을 이해할 필요가 있습니다.C 언어를 공부하다보면 Allocation 함수, 즉
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다. DFS(Depth First Search)는 깊이 우선 탐색입니다. 깊이 우선 탐색 알고리즘은 너비 우선 탐색 알고리즘과 방식만 다를 뿐 한 방식으로 문제가 해결되었다면 다른 방식으로도 문제를 해결할 수도 있습니다
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다. BFS(Breadth First Search)는 너비 우선 탐색입니다. 깊이 우선 탐색과 비슷하지만 우선으로 두는 관점이 다릅니다.너비 우선 탐색을 구현하기 위해서는 que 자료구조가 사용됩니다. que에 대해서
오늘 알아볼내용은 유명한 Knapsack 문제입니다. 이러한 Knapsack 문제들은 탐욕법(Greedy Algorithm) 또는 동적 계획법(Dynamic Programming)을 사용해서 해결할 수 있습니다.Knapsack문제는 다음과 같은 상황이 주어집니다. 배낭
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다.이전에 알아본 DFS, BFS는 그래프 탐색 알고리즘입니다. 그러나, 그래프가 아닌 선형데이터를 탐색할 수도 있지요. 그럴 경우에는 순차 탐색 혹은 이진 탐색 알고리즘을 사용할 수 있습니다.순차 탐색은 말 그대로 선
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다.매개 변수 탐색(Parametric Search)란 최적화 문제를 결정 문제로 바꾸어 해결하는 기법입니다.높이가 재각각인 떡볶이 떡이 있다고 하겠습니다. 손님이 떡의 양을 전달하면 떡을 잘라서 손님에게 전달해야 합니
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다.완전 이진 트리란 루트 노드부터 시작하여 왼쪽 자식, 오른쪽 자식 순으로 데이터가 삽입되는 트리를 의미합니다.이러한 트리에서는 가장 위인 루트 노드부터 왼쪽, 오른쪽 순으로 데이터가 차례대로 삽입됩니다.힙은 완전 이
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다.구현(Implementation)이란 머릿속에서 생각하는 것을 직접 코드로 옮기는 행위를 의미합니다. 구현 알고리즘도 동일합니다. 구현 알고리즘 문제들은 풀이를 쉽게 떠올릴 수는 있지만, 직접 코드를 짜기는 어려운
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다.다음과 같은 배열이 존재한다고 하겠습니다.배열의 크기를 $N$, 그러한 구간의 개수를 $M$이라고 한다면 구간마다 최대 $N$번의 선형탐색을 수행할 것이고, 그러한 작업을 $M$번 반복하므로 $O(N\\times M
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다.1과 자기자신을 제외한 약수를 갖고있지 않는 수를 우리는 소수라고 합니다. 예들 들어 아래와 같이 6, 7을 분류할 수 있습니다.6 : 1, 2, 3, 6을 약수로 갖고 있으므로 소수가 아닙니다.7 : 1과 7만을
이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다.투 포인터는 배열을 순차적으로 접근할 때, 두 개의 포인터의 위치를 기록해나가며 처리하는 알고리즘을 의미합니다. 주로, 배열에서의 연속적인 구간에 대한 요구사항이 있을 경우 사용하게 됩니다.아래와 같은 배열이 있다고
만약 배열을 순차적으로 순회하는 상황에서 일정한 간격을 통해 배열을 순회해야 한다면 투 포인터를 이용할 수도 있지만, 슬라이딩 윈도우를 이용하여 순회할 수 있습니다.슬라이딩 윈도우는 배열의 간격만큼의 합을 구한 후, 가장 왼쪽 인덱스의 원소만큼 빼고, 새롭게 추가되는