본문 바로가기

CS & 알고리즘/알고리즘

알고리즘 공부 시작하기 - 3개월 알고리즘 마스터 플랜

계기

사실 계기도 많았고 시도도 많았다.

알고리즘 공부는 항상 해왔지만 '돌아간다 신난다'의 안 좋은 습관이 있었고 슬프게도 내가 그걸 너무 재밌어해서 계속 고치고 싶지 않았다.

하지만 이정도면 땡깡은 피울대로 피웠고, 난 훌륭한 개발자가 되어야 하니까 이젠 정신을 차릴 시기가 지나도 한참 지나버렸다.

어르신께 이 상황을 말씀드리고 어떻게 하면 좋을지 조언을 구해봤다.

어르신의 조언을 바탕으로 정리해보았다.

목표

  • 지금까지는 감으로 풀었다면 이제는 이론을 확실히 익히고 전략적으로 접근하는 방식으로 바꾸는 것이 목표

원칙

1. 문제 풀이 방식 바꾸기

1단계: 문제 읽기 전 먼저 개념 확인

  • 문제를 보고 바로 코드 작성 금지.
  • 관련된 이론/유형을 먼저 떠올려 보기 (예: DFS/BFS 문제라면 탐색 방식과 시간 복잡도 고려).
  • 비슷한 유형의 문제를 풀어본 경험이 있다면 그때 접근법을 복기해보기.

2단계: 문제 풀이 전에 접근 방법을 문장으로 정리

  • "이 문제는 정렬을 활용하면 O(N log N)으로 해결할 수 있을 것 같다."
  • "브루트포스로 접근하면 O(N^2)이라 시간 초과가 날 수 있다. 더 나은 방법이 있을까?"
  • 손으로 간단한 예제 몇 개를 직접 시뮬레이션하며 아이디어를 정리.

3단계: 코드 작성 후 디버깅

  • 테스트케이스만 통과하면 안심 금지 ❌
  • "이 코드가 모든 경우를 커버할까?" 생각해보기.
  • 반례를 스스로 생성해서 확인.
  • 다른 사람의 풀이를 보며 비교 → 내 코드와 뭐가 다르고 더 나은 점이 무엇인지 분석.

2. 학습 루틴 개선

이론과 문제를 1:1로 매칭

  • 단순히 문제를 많이 푸는 것보다, 하나의 개념을 확실히 정리하고 문제를 푸는 게 중요.
  • 예를 들어 DFS/BFS를 공부하면
    1. 이론 정리 (재귀/스택/큐 활용, 시간 복잡도)
    2. 대표 유형 문제 3~5개 선정
    3. 문제를 풀면서 매번 "이론을 적용했는가?" 체크.

오답 정리 필수

  • "왜 틀렸는지"를 코드와 함께 블로그/노트에 기록.
  • 단순히 답만 적는 게 아니라, 내가 어떤 실수를 했고, 어떻게 보완할 수 있는지 정리.
  • 한 달 뒤 다시 풀어보고 성장 확인.

주간 회고

  • 매주 어떤 유형을 공부했고, 내가 전략적으로 문제를 해결했는지 점검.
  • 해결한 문제 중 가장 어려웠던 문제를 다시 리뷰.
  • "앞으로 어떤 개념을 더 보강할지" 플랜 수정.

3. 실천 플랜

이번 주 목표:

  1. 문제 풀기 전에 접근법을 문장으로 적는 습관 들이기.
  2. 하루 한 문제라도 반례 생성해서 직접 검증하기.
  3. "이론 -> 문제 풀이 -> 오답 정리" 루틴을 실천하기.

한 달 목표:

  1. 이론 정리 + 문제풀이 패턴을 몸에 익히기.
  2. 최소 5가지 알고리즘을 이론부터 정리하고, 대표 유형 문제 풀이.
  3. 내 코드의 시간복잡도 분석하는 습관 들이기.

이를 위해 계획을 세워보고자 다시 어르신께 조언을 구해보았다.

조언을 바탕으로 정리해보았다.

계획

  • 단순히 "열심히 해야지!"가 아니라, 측정 가능하고 지속 가능한 방식으로 접근하는 게 중요.

📌 1. 목표 설정하기 (SMART 원칙 적용)

목표를 단순히 "알고리즘 실력 키우기"라고 하면 막연해서 실천하기 어려우므로
👉 SMART 원칙을 적용해서 구체적인 목표 세우기.

  • Specific (구체적): "알고리즘을 전략적으로 접근하며 풀이 과정에서 오류를 분석하는 습관 들이기"
  • Measurable (측정 가능): "매주 5문제씩 유형별로 풀고, 블로그에 2개 정리"
  • Achievable (달성 가능): "처음엔 쉬운 문제부터 시작해서 점차 난이도를 올리기"
  • Relevant (관련성 있음): "코딩 테스트 대비 및 실전 문제 해결 능력 향상"
  • Time-bound (기한 명확): "3개월 안에 주요 알고리즘(정렬, 탐색, DP, 그래프 등) 개념 정리 및 문제 풀이"

📌 2. 계획 수립 (단기, 중기, 장기)

단순히 "매일 풀자"가 아니라 단기 → 중기 → 장기 목표로 나누고 진행하면 더 효과적

단기 목표 (1~2주)

  • 하루 1문제 이상 풀이
  • 문제를 풀기 전 접근법을 문장으로 정리
  • 테스트케이스가 통과하면 반례를 직접 만들어보기
  • 코드 실행 후 시간복잡도 계산 & 최적화 가능성 분석
  • 블로그에 2개 이상 정리 (왜 틀렸는지 포함)

중기 목표 (1~2개월)

  • 유형별 문제 정복하기 (예: 탐색, DP, 정렬, 그리디, 그래프 등)
  • 유형별 문제를 15~20개씩 풀면서 패턴 익히기
  • 비슷한 문제를 접했을 때 스스로 풀이 패턴을 설명할 수 있도록 연습
  • 한 달에 한 번 오답 노트 복습 & 다시 풀어보기

장기 목표 (3개월 이상)

  • 기업 코딩 테스트 실전 대비 (기출 문제 중심으로 연습)
  • 시간복잡도 고려하여 효율적인 코드 작성 습관화
  • 유형이 복합적으로 적용된 문제 풀이 연습 (ex. DP + 백트래킹)
  • 알고리즘 공부한 내용을 블로그나 GitHub에 정리 (포트폴리오화)

📌 3. 실천 전략 (루틴 & 피드백)

단순히 목표만 세우고 끝내는 게 아니라, 꾸준히 실천할 수 있도록 루틴을 만들고 피드백하는 과정이 필요

1️⃣ 알고리즘 학습 루틴 만들기

  • 월~금: 하루 1문제 풀기
    • 📝 풀이 방식 정리 → 코드 작성 → 반례 테스트 → 시간복잡도 분석
  • 토요일: 어려웠던 문제 다시 풀어보기, 정리
  • 일요일: 이번 주 학습한 개념 복습, 블로그 정리

2️⃣ 매주 회고

  • 어떤 유형에서 헷갈렸는지 정리
  • 새로운 개념이 있으면 따로 정리해서 노트 만들기
  • 한 달 후 예전에 틀렸던 문제를 다시 풀어보고 성장 체크

📌 4. 실천 예시 (주간 플랜)

주차 학습 내용 목표 문제 수 블로그 정리 추가 목표
1주차 정렬, 탐색(DFS/BFS) 5문제 2개 정리 오답 분석
2주차 그리디, 이분탐색 5문제 2개 정리 반례 만들기
3주차 DP 기초, 백트래킹 5문제 2개 정리 시간복잡도 분석
4주차 그래프 이론 (다익스트라 등) 5문제 2개 정리 기출 문제 풀이

📌 5. 꾸준히 하기 위한 동기부여

  1. 스터디 참여 (같이 하면 포기 확률 ↓)
  2. 리더보드 체크 (백준/프로그래머스 티어 목표 설정)
  3. 리워드 시스템 (목표 달성하면 좋아하는 음식 먹기, 쉬는 날 갖기)
  4. 블로그에 정리하면서 학습 내용 시각화
  5. 다른 사람 풀이 리뷰 & 피드백 받기

🔥 실행!

👉 우선 이번 주 목표를 정해볼까?
예를 들면:

  • 이번 주 목표: DFS/BFS 유형 문제 5개 풀고, 풀이 과정 정리
  • 하루 목표: 문제 1개 풀이 + 반례 생성 + 시간복잡도 분석

실행

학습 내용을 기준으로 주간플랜을 짜는 건 시기상 힘들 것 같아서
학습 내용 기반 / 목표 기반 / 난이도 기반 / 실전 대비 기반의 방법을 짜보고 이를 계획에 따라 적절히 섞으려 한다.

결론적으로 나온 3개월 알고리즘 마스터 플랜


🔥 3개월 알고리즘 마스터 플랜

📌 목표

  1. 직관적인 풀이 습관을 전략적인 접근으로 변경
  2. 이론을 빠삭하게 익히고, 문제 풀이 과정에서 오류 분석까지 철저하게
  3. 실전 감각을 기르고, 코딩 테스트 기출 문제에 적응하기

📅 주차별 세부 계획

🟢 1~4주차 (기본기 다지기)
🔵 5~8주차 (심화 문제 & 패턴 학습)
🟣 9~12주차 (실전 대비 & 기출 풀이)


📌 1~4주차: 알고리즘 기본기 다지기

핵심 목표: 알고리즘의 기초 개념을 확실히 다지고, 무조건 동작하는 코드가 아닌 전략적인 접근 방식을 익히기.

주차 학습 내용 + 문제 난이도 목표 문제 수 블로그 정리
1주차 정렬 & 완전 탐색 (버블, 선택, 퀵, 병합) + 브루트포스 실버 2~1 문제 5개 개념 1개 + 문제 풀이 2개
2주차 DFS & BFS 탐색 + 백트래킹 (순열/조합) 실버 1~골드 5 문제 5개 개념 1개 + 문제 풀이 2개
3주차 그리디 알고리즘 & 이분 탐색 골드 5~4 문제 5개 개념 1개 + 문제 풀이 2개
4주차 DP 기초 (점화식 세우기) + 재귀 골드 5 문제 5개 개념 1개 + 문제 풀이 2개

🔹 실천 방식
✅ 문제 풀이 전에 접근법을 문장으로 정리
✅ 문제 해결 후 반례 직접 만들기 & 시간복잡도 분석
✅ 블로그에 개념 정리 & 어려웠던 문제 분석


📌 5~8주차: 심화 알고리즘 패턴 익히기

핵심 목표: 알고리즘의 심화 개념을 익히고, 문제 풀이에서 유형을 빠르게 매칭하는 능력을 기르기.

주차 학습 내용 + 문제 난이도 목표 문제 수 블로그 정리
5주차 DP 심화 (배낭 문제, LIS, LCS) 골드 5~3 문제 5개 개념 1개 + 문제 풀이 2개
6주차 그래프 탐색 & 최단 경로 (다익스트라, 플로이드-워셜, 벨만-포드) 골드 5~3 문제 5개 개념 1개 + 문제 풀이 2개
7주차 트리 & 유니온-파인드 (MST, 크루스칼, 프림, LCA) 골드 4~3 문제 5개 개념 1개 + 문제 풀이 2개
8주차 투 포인터 & 슬라이딩 윈도우 골드 4~3 문제 5개 개념 1개 + 문제 풀이 2개

🔹 실천 방식
✅ 유형별 문제를 풀면서 패턴 익히기
✅ 동일 유형 문제를 최소 2개 이상 풀면서 풀이법 차이 분석
✅ 코드 최적화 연습 & 다른 사람 풀이 리뷰


📌 9~12주차: 실전 대비 & 기출 문제 풀이

핵심 목표: 실전 감각을 기르고, 코딩 테스트에서 시간을 줄이며 정확도를 높이기.

주차 실전 대비 내용 목표 문제 수 블로그 정리
9주차 카카오, 삼성 기출 문제 풀이 (실전 환경 적용) 기출 문제 5개 문제 풀이 3개
10주차 네이버, 라인, 현대 기출 문제 풀이 기출 문제 5개 문제 풀이 3개
11주차 모의 코딩 테스트 진행 (2시간 안에 3문제 풀기) 기출 문제 5개 회고 정리
12주차 약점 보완 & 오답 복습 틀렸던 문제 5개 최종 복습

🔹 실천 방식
시간 제한을 두고 문제 풀이 (실전 환경 적응)
한 번 틀린 문제는 반드시 다시 풀기
✅ 오답 정리 & 최적화 고민


🔥 추가 실천 방법 (지속 가능하게 유지)

주간 회고 & 목표 조정

  • "내가 어떤 유형에서 약했는가?" 복기
  • 부족한 개념이 있다면 다음 주 보완

알고리즘 블로그 정리

  • 개념 + 내가 풀었던 문제 풀이법 공유
  • 오답 & 반례 정리

리워드 시스템 활용

  • 하루 목표 달성 시 → 알고리즘 외에도 할 일 끝났다면 하고 싶은 거 하기(OTT / 게임)
  • 한 주 목표 달성 시 → 맛있는 거 먹기
  • 한 달 목표 달성 시 →

🚀 실행 플랜

📌 이번 주부터 바로 실천!
이번 주 목표:

  1. DFS/BFS 5문제 풀기
  2. 문제 풀이 전에 접근법 적기
  3. 반례 직접 만들고 시간복잡도 분석
  4. 블로그에 DFS/BFS 정리 + 어려웠던 문제 2개 정리

앞으로 주차별로 차근차근 포스팅해서 올려보려한다!
파이팅!