U E D R , A S I H C RSS

알고하자/표준교육과정 (rev. 1.6)

알고하자/표준교육과정

주의! 이 과정은 알고리즘에 특화되어 있습니다. 일반적인 교육과정과는 다를 수 있습니다.
박인서가 개인적으로 필요하다고 생각되는 부분을 적은 것이므로 많은 피드백 바랍니다.


1. C언어

1.1. 프로그램 세상보기

  • ZeroWiki 작성법
  • Hello, World! 프로그램 작성
  • 기본적인 C 프로그램 구조
  • 입출력과 주석
  • 변수와 자료형
  • ASCII 코드

1.2. 형변환과 연산자

  • 진법 표현
  • 형변환
  • 키워드와 식별자
  • 연산자의 종류
  • 연산자 우선 순위

1.3. 조건문과 반복문

  • if ~ else 와 else if
  • switch
  • 배열 기초
  • for문
  • while 과 do while
  • break와 continue

1.4. 함수와 전처리기

  • 함수란?
  • 함수 정의하기
  • 변수의 범위
  • main 함수에 파라미터 전달하기
  • 재귀함수
  • 전처리기

1.5. 포인터와 배열

  • 포인터
  • 메모리 주소
  • & 연산자
  • 포인터 변수와 자료형
  • Call by value와 Call by reference
  • 배열 다시 보기
  • 배열과 포인터

1.6. 다차원 배열과 연결 리스트

  • 구조체
  • 다차원 배열
  • 행렬
  • malloc과 free
  • linked list

1.7. 문자열과 파일 입출력

  • 문자열이란?
  • 문자열의 선언
  • 문자열 함수
  • KMP 알고리즘
  • 문자와 정수의 변환
  • 파일 입출력 선언
  • 파일 입출력

2. C++

2.1. 더하기로 넘어가기

  • 헤더와 include 개념 잡기
  • std::cin, std::cout, std::endl
  • 참조 형식과 값 형식
  • 함수 오버로딩
  • 디폴트 파라미터
  • 동적할당 new, delete, delete[]

2.2. 클래스와 유용한 문법

  • 클래스와 구조체
  • 클래스와 인스턴스
  • 클래스 정의 문법
  • public과 private
  • 메소드 외부 정의
  • auto
  • range-based for loop
  • initalizer-list
  • lambda expression

2.3. STL 1

  • pair
  • vector, deque
  • set, map
  • stack, queue, priority_queue
  • string

2.4. STL 2

  • reverse, swap
  • sort/stable_sort
  • binary_search
  • lower_bound/upper_bound
  • min/max
  • min_element/max_element

3. 자료구조

3.1. 알고리즘 기초와 수학

  • 알고리즘의 정의
  • 시간 복잡도
  • 최대공약수/최소공배수(유클리드 호제법)
  • 소수 판별법
  • 팩토리얼
  • 피보나치 수

3.2. 스택 & 큐, 정렬 & 탐색

  • 스택


  • 선택/삽입/버블 정렬
  • 퀵/머지 정렬
  • Binary Search

3.3. 그래프 & 트리

  • 그래프(정의, 용어)
  • 인접 행렬과 인접 리스트
  • 트리(정의, 순회)
  • 트리 저장법(직접 구현, 배열 이용)
  • 힙(정의, 정렬)

4. 기초 알고리즘

4.1. 탐색

  • Brute force
  • BFS
  • DFS
  • 백트래킹

4.2. 분할 정복 & 그리디 알고리즘

  • 이분 탐색 알고리즘
  • Parametric Search(Bisection)
  • 그리디 알고리즘

4.3. 다이나믹 프로그래밍 1

  • 다이나믹 개념
  • 부분 집합
  • 업 시퀀스
  • knapsack

4.4. 트리 응용 1

  • 트리 응용(트리의 부모, 트리의 폭)
  • 이진 검색 트리(BST)
  • 가장 가까운 공통 조상(LCA)

4.5. 그래프 알고리즘

  • 최소 스패닝 트리(위상 정렬, 프림/크루스칼)
  • 최단 경로(다익스트라, 플로이드 와샬)
  • Flood Fill 알고리즘

5. 심화 알고리즘

5.1. 다이나믹 프로그래밍 2

  • 추가 예정

5.2. 트리 응용 2

  • 세그먼트 트리
  • 바이너리 인덱스 트리
  • Trie

5.3. 기하 알고리즘

  • 플레인 스위핑
  • Convex Hull(Graham Scan)

5.4. 네트워크 플로우

  • 이론(최대 유량, 이분 매칭, 민 컷)
  • 최소 비용 유량(MCMF)

5.5. SCC

  • 연결 요소
  • SCC(단절점, 단절선)

5.6. 2-SAT

  • 이분 그래프
  • Disjoint-set
  • 2-SAT

6. 기타

  • 위에 적힌 것 외에 필요하다고 생각되는 알고리즘을 아래에 적어봅시다.
  • Dynamic Programming 2에 어떤 것을 채워야 될 지 모르겠군요.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:30:22
Processing time 0.0403 sec