'''주의! 이 과정은 알고리즘에 특화되어 있습니다. 일반적인 교육과정과는 다를 수 있습니다.''' '''[박인서]가 개인적으로 필요하다고 생각되는 부분을 적은 것이므로 많은 피드백 바랍니다.''' [[TableOfContents]] = C언어 = == 프로그램 세상보기 == * ZeroWiki 작성법 * Hello, World! 프로그램 작성 * 기본적인 C 프로그램 구조 * 입출력과 주석 * 변수와 자료형 * ASCII 코드 == 형변환과 연산자 == * 진법 표현 * 형변환 * 키워드와 식별자 * 연산자의 종류 * 연산자 우선 순위 == 조건문과 반복문 == * if ~ else 와 else if * switch * 배열 기초 * for문 * while 과 do while * break와 continue == 함수와 전처리기 == * 함수란? * 함수 정의하기 * 변수의 범위 * main 함수에 파라미터 전달하기 * 재귀함수 * 전처리기 == 포인터와 배열 == * 포인터 * 메모리 주소 * & 연산자 * 포인터 변수와 자료형 * Call by value와 Call by reference * 배열 다시 보기 * 배열과 포인터 == 다차원 배열과 연결 리스트 == * 구조체 * 다차원 배열 * 행렬 * malloc과 free * linked list == 문자열과 파일 입출력 == * 문자열이란? * 문자열의 선언 * 문자열 함수 * KMP 알고리즘 * 문자와 정수의 변환 * 파일 입출력 선언 * 파일 입출력 = C++ = == 더하기로 넘어가기 == * 헤더와 include 개념 잡기 * std::cin, std::cout, std::endl * 참조 형식과 값 형식 * 함수 오버로딩 * 디폴트 파라미터 * 동적할당 new, delete, delete[] == 클래스와 유용한 문법 == * 클래스와 구조체 * 클래스와 인스턴스 * 클래스 정의 문법 * public과 private * 메소드 외부 정의 * auto * range-based for loop * initalizer-list * lambda expression = 자료구조 = == 알고리즘 기초와 수학 == * 알고리즘의 정의 * 시간 복잡도 * 최대공약수/최소공배수(유클리드 호제법) * 소수 판별법 * 팩토리얼 * 피보나치 수 == 스택 & 큐, 정렬 & 탐색 == * 스택 * 큐 * 덱 * 선택/삽입/버블 정렬 * Binary Search, 퀵/머지 정렬 == 그래프 & 트리 == * 그래프(정의, 용어) * 인접 행렬과 인접 리스트 * 트리(정의, 순회) * 트리 저장법(직접 구현, 배열 이용) * 힙(정의, 정렬) = 기초 알고리즘 = == 탐색 == * Brute force * BFS * DFS * 백트래킹 == 분할 정복 & 그리디 알고리즘 == * 이분 탐색 알고리즘 * Parametric Search(Bisection) * 그리디 알고리즘 == 다이나믹 프로그래밍 1 == * 다이나믹 개념 * 부분 집합 * 업 시퀀스 * knapsack == 트리 응용 1 == * 트리 응용(트리의 부모, 트리의 폭) * 이진 검색 트리(BST) * 가장 가까운 공통 조상(LCA) == 그래프 알고리즘 == * 최소 스패닝 트리(위상 정렬, 프림/크루스칼) * 최단 경로(다익스트라, 플로이드 와샬) * Flood Fill 알고리즘 = 심화 알고리즘 = == 다이나믹 프로그래밍 2 == * 추가 예정 == 트리 응용 2 == * 세그먼트 트리 * 바이너리 인덱스 트리 * Trie == 기하 알고리즘 == * 플레인 스위핑 * Convex Hull(Graham Scan) == 네트워크 플로우 == * 이론(최대 유량, 이분 매칭, 민 컷) * 최소 비용 유량(MCMF) == SCC == * 연결 요소 * SCC(단절점, 단절선) == 2-SAT == * 이분 그래프 * Disjoint-set * 2-SAT = 기타 = * 위에 적힌 것 외에 필요하다고 생각되는 알고리즘을 아래에 적어봅시다. * Dynamic Programming 2에 어떤 것을 채워야 될 지 모르겠군요. ------------------------ [알고하자]