READIZ · LEARN

따라가며 배우는 알고리즘

작은 입력을 손으로 풀고, 그림으로 확인하고, 코드로 실행합니다.

바로 실행하는 C++ 예제와 직접 조작하는 실험을 함께 제공합니다.

2개의 강의

배열과 구간을 다루는 기본기

구간 합과 갱신을 모아서 처리하고, 두 포인터로 필요한 구간을 찾습니다. 경계와 입력 조건을 직접 바꾸며 적용 범위를 확인합니다.

먼저 알면 좋아요 · 배열, 반복문과 C++ 함수의 기초

  1. 01

    누적합과 차분 배열: 구간을 한 번에 처리하기

    구간 합과 구간 덧셈을 분리하고, 경계 표시를 실제 값으로 복원합니다.

  2. 02

    투 포인터와 슬라이딩 윈도우: 창을 움직이는 조건

    포인터를 되돌리지 않아도 되는 이유를 살피고, 음수 반례로 적용 범위를 확인합니다.

2개의 강의

좌표와 구간 합을 관리하는 자료구조

큰 값을 순위로 바꾸고, 값이 계속 바뀌는 배열의 합을 관리합니다. 실제 좌표 간격과 각 자료구조가 담당하는 구간을 그림으로 확인합니다.

먼저 알면 좋아요 · 정렬, lower_bound와 누적합의 이해

  1. 01

    좌표 압축: 순서는 남기고 값의 크기는 줄이기

    큰 값과 중복을 작은 인덱스로 바꾸고, 순위 차이와 실제 거리의 차이를 확인합니다.

  2. 02

    Fenwick Tree: 바뀌는 배열의 구간 합

    누적합을 다시 만들지 않고, 점 갱신과 구간 합을 로그 시간에 처리합니다.

3개의 강의

경로를 개선하며 배우는 휴리스틱

유효한 배송 경로를 만들고, 개선을 검증하고, 지역 최적을 벗어납니다. 작은 예제를 손으로 따라간 뒤 같은 코드를 직접 실행합니다.

먼저 알면 좋아요 · 배열, 반복문과 C++ 함수의 기초

  1. 01

    배송 순서 개선: 열린 경로와 2-opt

    가까운 점부터 방문하는 초기해를 만들고, 경계 간선만 계산해 배송 경로를 개선합니다.

  2. 02

    휴리스틱 검증: 차분 계산과 스트레스 테스트

    전체 비용 재계산으로 차분식을 확인하고, 고정 seed와 작은 반례로 오류를 재현합니다.

  3. 03

    지역 최적을 벗어나는 탐색: Simulated Annealing

    손해를 잠시 허용하는 이유와 온도, 채택 확률, current와 best의 분리를 실제 경로로 배웁니다.

2개의 강의

일정과 배치를 탐색하는 휴리스틱

여러 부분 일정을 남기는 Beam Search와 완성된 배치를 고치는 destroy/repair를 비교합니다. 작은 실행 모델에서 선택과 복구를 확인합니다.

먼저 알면 좋아요 · greedy, 지역 탐색과 상태 복사의 이해

  1. 01

    설치 일정과 Beam Search: 남길 후보와 실행할 답

    분기 후보와 경로 후보를 따로 줄이고, 탐색 평가값과 실제 점수를 구분합니다.

  2. 02

    광고판 배치와 destroy/repair: 지우고 다시 채우기

    작은 이동의 한계를 여러 광고의 제거와 재배치로 넘고, 실패한 시도를 정확히 복구합니다.