자료구조를 배우기 위한 3가지 이유
자료구조는 AI 알고리듬의 효율적 구현과 문제 해결 능력 향상을 위해 필수적인 기초 지식입니다.
-
1. 효율적인 문제 해결과 성능 최적화
자료구조는 알고리듬의 성능을 좌우합니다. 예를 들어, 인공지능(AI) 알고리듬에서 데이터를 빠르게 처리하고 저장하는 데 필요한 트리, 그래프, 힙 등을 이해하고 활용할 수 있습니다. 적절한 자료구조 선택은 AI 모델 학습과 예측 성능을 최적화하는 데 필수적입니다.
-
2. 코딩테스트 및 실무에서의 핵심 역량
AI 시스템 개발, 데이터 분석 등에서 자료구조는 중요한 역할을 합니다. 코딩 테스트에서도 효율적인 자료구조 활용은 문제를 해결하는 데 중요한 요소가 되며, 실무에서는 대용량 데이터를 처리하거나, 머신러닝, 딥러닝 알고리듬을 구현할 때 필수적인 기초 지식입니다.
-
3. AI 알고리듬 이해 +
구현에 필수적인 기초인공지능 분야에서 다양한 알고리듬이 자료구조를 기반으로 합니다. 예를 들어, 그래프 알고리듬은 AI에서 최단 경로 찾기나 군집화에 사용되고, 힙은 AI 모델의 최적화 과정에 활용됩니다. 자료구조를 잘 이해하면 AI 알고리듬을 더 효과적으로 구현하고, 성능을 향상시킬 수 있습니다.
Course curriculum
강의 목차
챕터1. 기본 개념
챕터2. 재귀(Recursion)
재귀 호출
재귀로 합 구하기
피보나치 수열
재귀 이진 탐색
순열 문제
챕터3. 배열
문자열 ADT
다항식
희소 다항식
행렬
동적 배열의 배열
희소 행렬
챕터4 . 스택(Stack)
스택
미로
하노이의 탑
챕터5. 큐(Queue)
원형 큐
조세푸스 문제
덱(Deque)
수식 계산
챕터6. 연결 리스트
순차 표현 vs 연결 표현
연결 노드
단방향 연결 리스트
연결 다항식 문제
양방향 연결 리스트
챕터7. 트리(Tree)
선형 vs 비선형 자료구조
이진 트리 소개
이진 트리 구현
수식 계산 트리
쓰레드
챕터8. 힙(Heap)
최대 힙
우선순위 큐
챕터9. 이진 탐색 트리
이진 탐색 트리
균형잡힌 탐색 트리
영어 사전 만들기
챕터10. 정렬
쉘 정렬
병합 정렬
퀵 정렬
기수 정렬
챕터11. 해싱(Hashing)
보간 탐색
색인 순차 탐색
해시 테이블
챕터12. 그래프
인접 행렬
인접 리스트
알고리듬 공부 안내
FAQ💬
자주 묻는 질문
-
1. 강의의 범위는 어떻게 되나요? 대학 강의와 어떻게 다른가요?
일반적인 대학 강의를 압축해서 수동적으로 듣는 시간을 최소한으로 줄이고 대신에 스스로 생각하면서 풀어내는 실습을 강화하였습니다. 예를 들면 맨 앞에서 간단한 정렬 알고리듬을 공부할 때 "이렇게 되는 거에요"라고 일방적으로 알려주는 방식이 아니라 스스로 생각해서 터득하도록 유도합니다. 따배씨 같이 두꺼운 교재를 하나하나 자세히 설명해주는 수동적인 강의가 아닙니다. 파이썬 추월코스를 공부한 적이 없으시다면 강의 샘플을 참고해주세요. 대신에 나중에 알고리듬 과목에서 제대로 배워야할 내용들을 4가지 제외하였습니다. 문자열 비교하는 KMP 알고리듬은 Horowitz 자료구조 교재에는 (수동적으로 알려주는 방식으로) 앞에 나오지만 CLRS 알고리듬 교재에는 대학원 수준으로 뒤에서 배우도록 분류되어 있습니다. 쉬운 알고리듬으로 연습을 거친 후에 공부하는 것이 더 적절하다고 판단되어서 여기서는 제외하였습니다. 그래프의 기본 자료구조와 순회는 다루지만 그래프 알고리듬들 3가지(MST, 최단경로, 위상 정렬)들은 어차피 알고리듬에서 중요하게 공부해야 하고 코테 준비 관점에서 볼때도 표준 라이브러리로 문제 풀이 요령을 같이 연습하는 것이 훨씬 효율적이기 때문에 여기서는 제외하였습니다. 코테 준비로 마음이 급한 분들일 수록 오히려 뒤로 갈수록 엄청난 시간과 에너지를 아낄 수 있도록 도와드리는 구성입니다.
-
2. C언어를 사용하나요 아니면 C++언어를 사용하나요?
기본적으로 C++언어지만 C언어 보다 편리하고 C++ 보다 쉽게 접근할 수 있도록 적절한 균형점에서 진행합니다. 예를 들어서 printf() 보다는 cout을 사용하고 class 문법을 사용하기는 하지만 복잡한 객체지향 보다는 자료구조 실습에 집중합니다. 뒤쪽에서는 template도 일부 사용하지만 C++ 문법의 까다로움은 피하면서도 핵심 개념을 터득하실 수 있습니다.
-
3. 표준 라이브러리를 사용하나요?
자료구조를 만들면서 아주 기초적인 프로그래밍 패턴들을 연습하기 때문에 표준 라이브러리는 거의 사용하지 않습니다. 맨 뒤에서 빨리 마무리하고 싶으신 분들을 위해 std::string을 2번 사용하며 그 조차도 연습을 더 원하시는 분들은 만들어서 사용하실 수 있습니다. 반대로 알고리듬 강의에서는 자신의 주력 언어에서 제공하는 표준 라이브러리를 사용해서 어느정도는 문제 풀이 요령도 함께 준비해나가시기를 권장합니다.
-
4. 템플릿 문법을 사용하나요?
기본 개념을 터득하는 데에 집중하기 위해서 문법적인 까다로움을 최소화하였습니다. 따라서 템플릿은 앞 부분에서 어느정도 연습을 끝내고 뒤에 가서 제한적으로 사용합니다. C++ 문법의 까다로움은 피하면서 핵심 개념을 터득하실 수 있도록 도와드립니다. 반대로 후속 알고리듬 강의에서는 표준 라이브러리와 함께 당연히 템플릿도 많이 사용하게 됩니다.
Checklist
수강 전 체크리스트
-
본 강의는 100% 한국어로 진행되며 영문 수료증이 발급됩니다!
(*This lecture is 100% in Korean only) -
선수 과목: C++ 핵심정리 무료 강의, 홍정모의 파이썬 추월코스
-
모든 강의의 환불 조건은 수강일 기준이 아닌 결제일 기준입니다. 부분환불은 불가능하며, 수강 시작 후 7일 이내 챕터1 까지는 공부량과 상관 없이 전액 환불해드립니다. 챕터2 부터는 수강 시작일과 상관 없이 환불이 불가능합니다.
홍정모 연구소 로드맵 코스
파이썬 추월코스 ➡️ C++ 핵심 정리 ➡️ 자료구조 ➡️ 알고리듬
About Jeong-Mo Hong
이것만 하면 된다! 프로그래밍 강의 경력 15년 이상, 누적 수강생 14,000명 이상
2020-2021 Instagram 소프트웨어 엔지니어
2008-2019 동국대학교 컴퓨터공학과 부교수
2005-2007 Stanford University 박사후 연구원
2002-2005 고려대학교 전산학 박사
1996-2002 카이스트 기계공학과 학석사