안녕하세요? 저는 고려대학교 컴퓨터학과 23학번에 재학 중인 ALPS 부회장 김승환입니다. 이번에 알고리즘 초급 반의 강사를 맡게 되어 이렇게 포스팅 올립니다. AlKor, ALPS, MatKor의 모든 동아리 부원분들은 수강하실 수 있으니 많은 관심 부탁드립니다!!!

2024-1 AlKor, ALPS, MatKor 알고리즘 초급 스터디

  • 강사
이름 학과 학번
김승환 컴퓨터학과 23학번
  • 강의 시간: 매주 목요일 18:00~20:00
  • 강의 장소: 매주 공지 (고려대학교 이공계캠퍼스 내에서 진행)

강의 개요

본 강의는 컴퓨터프로그래밍I 과목을 수강하며 좀더 심화된 내용의 프로그래밍을 공부하고 싶은 학생들에게 추천하는 강의입니다.
본 강의는 이산수학(COSE211), 자료구조(COSE213), 알고리즘(COSE214)의 내용과 관련된 문제 풀이를 포함합니다.
어떤 언어로 문제를 풀어도 상관 없습니다! 다만 강의에서는 C++와 Python을 위주로 강의를 진행할 예정입니다.

학습 목표

  • 기초적인 자료구조, 알고리즘 이론을 이해하고 이를 프로그래밍에 적용할 수 있다.
  • 이에 더해 수학, 알고리즘 지식을 이용해서 다양한 문제를 해결할 수 있다.
  • 본인의 프로그램이 제약조건에서 작동할 수 있는지 파악하는 방법을 알 수 있다.
  • 백준 골드 티어를 달성한다!

예정 커리큘럼

주차 강의 날짜 강의 내용
01 2024/03/14 OT, 문제 풀이와 시간 복잡도, 선형/비선형 자료구조와 STL (1)
02 2024/03/21 선형/비선형 자료구조와 STL (2), 정렬, 이분탐색
03 2024/03/28 브루트포스 알고리즘, 백트래킹과 가지치기, 분할정복
04 2024/04/04 그래프와 트리, 그래프 탐색 (DFS, BFS)
중간고사 휴강 1 2024/04/11 휴강
중간고사 휴강 2 2024/04/18 휴강
05 2024/04/25 그래프 응용 문제 풀이
06 2024/05/02 다이나믹 프로그래밍
07 2024/05/09 기초 정수론, 모듈로 연산, 빠른 팩토리얼 계산
08 2024/05/16 여러 가지 수열, 기초 조합론, 빠른 행렬 거듭제곱
축제 기간 휴강 2024/05/23 대동제로 인한 휴강
09 2024/05/30 종강

01주차: OT, 문제 풀이와 시간 복잡도, 선형/비선형 자료구조와 STL (1)

  • 알고리즘이 무엇인지에 대해 알아보고, 우리가 알고리즘을 공부해야 하는 이유에 대해서 알아봅니다.
  • 우리의 목표인 ICPC 등 PS 대회에 대해 소개합니다.
  • 알고리즘의 성능 분석 방법인 시간 복잡도, 루프 불변식과 같은 알고리즘의 증명 방법에 대해 배웁니다.
  • 선형/비선형 자료구조에 대해 배워보고 이를 쉽게 사용할 수 있는 STL에 대해 알아봅니다.

02주차: 선형/비선형 자료구조와 STL (2), 정렬, 이분탐색

  • 더 다양한 자료구조에 대해 배워보고 이를 사용해 문제를 풀어봅니다.
  • 무작위로 배치된 값들을 일정한 규칙에 따라 정렬하는 방법을 알아봅니다.
  • 이렇게 정렬된 데이터에서 특정한 값을 빠르게 찾는 방법을 알아봅니다.

03주차: 브루트포스 알고리즘, 백트래킹과 가지치기, 분할정복

  • 고려해야하는 것들이 적다면 모두 검토하는 것이 빠를 수 있습니다! 이 방법을 배워봅시다.
  • 브루트포스 알고리즘을 좀 더 최적화 해봅시다!
  • 절대 불가능한 경우는 탐색을 중지하거나 문제를 잘게 나누어 풀어봅시다.

04주차: 그래프와 트리, 그래프 탐색 (DFS, BFS)

  • 자료구조의 일종인 그래프와 트리의 개념에 대해 배우고 이에 대한 성질을 배워봅시다.
  • 이를 탐색하는 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)에 대해 배워봅시다.

05주차: 그래프 응용 문제 풀이

  • 그래프를 이용해서 풀 수 있는 다양한 응용 문제를 풀어 봅시다.
  • 그래프로 집합의 포함 관계를 빠르게 나타낼 수 있다는 것을 아시나요? 유니온 파인드 알고리즘에 대해 배워봅시다!

06주차: 다이나믹 프로그래밍

  • 다이나믹 프로그래밍의 개념을 배우고, 이를 적용할 수 있는 여러 쉬운 문제들을 살펴봅시다.
  • Top-down, Bottom-up 접근 방식과 메모이제이션 기법에 대해 알아봅시다.

07주차: 기초 정수론, 모듈로 연산, 빠른 팩토리얼 계산

  • 모듈로 연산, 모듈로 역원 등에 대한 수학적 개념을 학습힙니다.
  • 이 수학적 개념과 다이나믹 프로그래밍을 이용해 다양한 수학 문제를 풀어봅시다!

08주차: 여러가지 수열, 심화 정수론, 빠른 행렬 거듭제곱

  • 더 어려운 수학에 대해 공부하고, 앞서 살펴본 알고리즘 기법을 이용해 어려운 수학 문제를 풀어봅시다!

09주차: 종강

  • 지금까지 학습한 내용을 복습합니다.