알고리즘강의 13

알고리즘 3강 :: 분할정복, 이진탐색, 퀵정렬

알고리즘 3강을 보며 배운내용 3대 알고리즘중 하나 분할정복 방법의 원리, 특징, 단계를 알아봐야지 분할정복 방법 원리 순환적(recursively) 문제를 하향식(top-down) 접근 문제를 계속 분할하고, 해결된 값(해)를 결합해서 문제의 답을 구한다 특징 분학된 작은 문제는 원래 문제와 같다 입력 크키가 작아진 것 분할된 작은 문제는 독립적이다 그래서 반복해서 분할과 결과를 합칠 수 있다 처리 단계 분할: 문제를 여러 개의 작은 문제로 나누기 정복: 작은 문제를 더 분할되지 않을 크기가 되면 해를 구하기 결합: 정복된 해를 결합해서 원래 문제의 해(값)을 구한다 결합 단계가 없는 문제도 있다고 한다 분할 정복은 어디에 쓸까? 이진 탐색, 퀵 정렬, 합병 정렬, 선택 문제 이진 탐색 한 쪽만 조지는..

알고리즘 2강 :: 대표적인 알고리즘 3가지, 점근 성능

알고리즘 2강을 보며 배운내용 알고리즘의 정의 입출력, 명확성, 유한성, 유효성을 만족하고 효율적이어야 한다 순차탐색 처음부터 순서대로 찾는 방법 이진 탐색 반으로 나눠서 탐색 순서대로 되어있을 때 사용하면 좋다 랜덤이면 사용할 수 없다 대표적인 알고리즘 설계 기법 3가지 분할정복(divide and conquer) 동적 프로그래밍(dynamic programming) 욕심쟁이(greedy) 알고리즘 분석 정확성, 효율성 효율성 분석 메모리 양 => 공간 복잡도(space complexity) 수행 시간 => 시간 복잡도(time complexity) 메모리 적게 쓰고, 수행 시간 짧은게 좋은 알고리즘 보통 시간 복잡도만 따진다(메모리는 구하기 쉬워서) 시간 복잡도 알고리즘 단위 연산의 수행 횟수의 더해..

알고리즘 1강 :: 모든 자료구조 구현은 배열과 연결리스트

알고리즘 1강을 보며 배운내용 알고리즘 준비 자료구조 프로그래밍 언어 능력 수학적 능력 이 있으면 잘 할 수 있다 컴퓨터 과학 컴퓨터로 문제를 해결하기 위한 학문 즉 알고리즘은 문제 해결을 위한 효율적인 레시피 컴퓨터로 문제를 풀기위해 알고리즘이 필요하다 자료구조 컴퓨터에서 데이터 사이 논리적 관계 표현, 조직화 자료구조, 알고리즘을 잘 이용하면 좋은 프로그램 만들 수 있다 기본 자료구조 선형 한 줄로 줄 세울 수 있는 자료구조 배열, 연결리스트, 스택, 큐 비선형 줄 세울 수 없는 자료구조 트리, 그래프 각 자료구조의 구성과, 삽입, 삭제 방법을 알자 트리, 그래프는 익숙치 않다 모든 자료구조는 배열 혹은 연결 리스트로 구현한다 아~ 단순해서 좋다 트리 노드의 차수: 각 노드가 가지고 있는 자식 노드 ..

728x90