문제를 읽고 분석합니다.
입력과 출력, 제한 조건, 필요한 정보를 정확히 파악하며 문제의 핵심을 찾습니다.
Algorithm Course
알고리즘 과정은 코딩 문법을 넘어, 문제를 정확히 읽고 구조를 파악한 뒤 적절한 자료구조와 알고리즘으로 해결하는 문제 해결력 중심 수업입니다.
What is algorithm
학생들은 문제를 읽고, 조건을 분석하고, 필요한 구조를 선택한 뒤, 효율적인 코드로 구현하는 과정을 단계적으로 익힙니다.
입력과 출력, 제한 조건, 필요한 정보를 정확히 파악하며 문제의 핵심을 찾습니다.
배열, 리스트, 스택, 큐, 트리, 그래프 등 문제 상황에 맞는 구조를 판단합니다.
정렬, 탐색, DFS/BFS, 그리디, DP 등 적절한 풀이 전략을 세웁니다.
정확한 구현, 디버깅, 시간복잡도 분석, 반례 확인을 통해 풀이를 완성합니다.
Learning step
학생의 선행 학습 수준과 문제 해결 능력에 따라 적절한 단계부터 학습을 시작합니다.
Python, C++ 또는 Java 중 하나의 언어를 선택하여 입출력, 변수, 조건문, 반복문, 배열과 리스트, 문자열, 함수 등 프로그래밍의 기본 문법을 익힙니다. 문법 암기를 넘어 자신의 생각을 코드로 옮기는 기초 능력을 기릅니다.
기초 문법을 활용하여 다양한 구현 문제를 해결합니다. 수학적 규칙 찾기, 도형 출력, 문자열 처리, 자료 처리, 재귀 호출 등을 학습하며 문제를 읽고 풀이 과정을 순서대로 정리하는 능력을 기릅니다.
단순 구현을 넘어 문제에 적합한 알고리즘을 선택하는 방법을 배웁니다. STL, 정렬, 분할 정복, 탐욕 알고리즘, 백트래킹, DFS/BFS, 동적 계획법 등을 단계적으로 학습합니다.
비트 연산, 구간 질의, 그래프 탐색과 그래프 알고리즘, 동적 계획법, 기초 계산 기하 등 중급 이상의 알고리즘을 학습합니다. 제한 조건을 근거로 풀이를 설계하는 훈련을 진행합니다.
탐욕 알고리즘의 정당성 증명, 고급 구간 질의, 그래프 알고리즘, 심화 동적 계획법, 기하 등의 문제를 학습합니다. 문제의 겉모습이 아니라 핵심 구조를 찾아내는 연습을 진행합니다.
고급 자료구조, 구간 질의, 그래프 알고리즘, 심화 동적 계획법, 기하, 네트워크 플로우, 문자열 알고리즘 등을 다룹니다. 복잡한 문제를 안정적으로 완성하기 위한 코드 설계와 디버깅 능력을 강화합니다.
고난도 문제를 종합적으로 다루며 실전형 문제 해결력을 완성합니다. 다양한 영역의 알고리즘을 연결하고, 풀이 설계와 구현, 검증 과정을 스스로 수행할 수 있도록 훈련합니다.
현재 수준을 확인하고 적절한 시작 단계를 결정합니다.
핵심 문법과 알고리즘 개념을 정확히 이해합니다.
직접 구현하며 문제 해결 과정을 익힙니다.
알고리즘 선택 이유, 시간 복잡도, 반례를 함께 분석합니다.
더 효율적인 코드와 안정적인 구현 방법을 익힙니다.
목표는 정답을 맞히는 것이 아니라, 새로운 문제도 스스로 해결할 수 있는 힘을 기르는 것입니다.
Expansion
알고리즘을 배우는 이유는 문제를 해결하는 힘을 기르는 데 있습니다.
그렇게 쌓인 역량은 다양한 분야로 자연스럽게 이어집니다.
KOI, USACO를 비롯한 다양한 알고리즘 대회에 도전할 수 있는 실력을 갖추게 됩니다. 대회를 위한 수업이 아니라, 문제 해결력을 바탕으로 자연스럽게 대회에 도전할 수 있는 수준을 목표로 합니다.
과학고·영재학교·특성화고·국제학교 진학을 준비하는 학생부터 정보 내신을 준비하는 모든 학생들에게 알고리즘과 프로그래밍 역량은 중요한 경쟁력이 됩니다. 문제 해결 능력을 체계적으로 기를 수 있습니다.
컴퓨터공학을 비롯한 SW 계열 전공에서 배우는 프로그래밍, 자료구조, 알고리즘의 기초가 됩니다. 대학 수업에서 요구하는 구현 능력과 사고력을 미리 준비할 수 있습니다.
기업 코딩테스트뿐 아니라 AI, 소프트웨어 개발, 데이터 분야 등 다양한 진로로 이어지는 핵심 역량을 기를 수 있습니다.
알고리즘을 통해 기른 사고력은 정보 교과 수행평가와 프로젝트는 물론, 다양한 SW·AI 활동에서도 자연스럽게 활용됩니다. 이러한 경험은 학생의 목표에 따라 알고리즘 대회, 과학고·영재고 준비, 대학 전공, 코딩테스트 등 다양한 분야로 이어질 수 있는 탄탄한 기반이 됩니다.
학생마다 현재 수준과 목표는 모두 다릅니다.
프로그래밍이 처음인 학생부터 알고리즘을 학습한 학생까지,
진단을 통해 가장 적합한 단계부터 시작할 수 있습니다.
현재 수준과 목표를 함께 확인하고 학생에게 적합한 학습 방향을 안내합니다.
학년이 아닌 문제 해결 능력을 기준으로 시작 단계를 결정합니다.
학생의 현재 수준과 목표에 맞춰 학습 계획을 함께 설계합니다.
기술은 빠르게 변하지만, 스스로 문제를 이해하고 해결하는 능력의 가치는 변하지 않습니다.