계기
사실 계기도 많았고 시도도 많았다.
알고리즘 공부는 항상 해왔지만 '돌아간다 신난다'의 안 좋은 습관이 있었고 슬프게도 내가 그걸 너무 재밌어해서 계속 고치고 싶지 않았다.
하지만 이정도면 땡깡은 피울대로 피웠고, 난 훌륭한 개발자가 되어야 하니까 이젠 정신을 차릴 시기가 지나도 한참 지나버렸다.
어르신께 이 상황을 말씀드리고 어떻게 하면 좋을지 조언을 구해봤다.
어르신의 조언을 바탕으로 정리해보았다.
목표
- 지금까지는 감으로 풀었다면 이제는 이론을 확실히 익히고 전략적으로 접근하는 방식으로 바꾸는 것이 목표
원칙
1. 문제 풀이 방식 바꾸기
✅ 1단계: 문제 읽기 전 먼저 개념 확인
- 문제를 보고 바로 코드 작성 금지.
- 관련된 이론/유형을 먼저 떠올려 보기 (예: DFS/BFS 문제라면 탐색 방식과 시간 복잡도 고려).
- 비슷한 유형의 문제를 풀어본 경험이 있다면 그때 접근법을 복기해보기.
✅ 2단계: 문제 풀이 전에 접근 방법을 문장으로 정리
- "이 문제는 정렬을 활용하면 O(N log N)으로 해결할 수 있을 것 같다."
- "브루트포스로 접근하면 O(N^2)이라 시간 초과가 날 수 있다. 더 나은 방법이 있을까?"
- 손으로 간단한 예제 몇 개를 직접 시뮬레이션하며 아이디어를 정리.
✅ 3단계: 코드 작성 후 디버깅
- 테스트케이스만 통과하면 안심 금지 ❌
- "이 코드가 모든 경우를 커버할까?" 생각해보기.
- 반례를 스스로 생성해서 확인.
- 다른 사람의 풀이를 보며 비교 → 내 코드와 뭐가 다르고 더 나은 점이 무엇인지 분석.
2. 학습 루틴 개선
✅ 이론과 문제를 1:1로 매칭
- 단순히 문제를 많이 푸는 것보다, 하나의 개념을 확실히 정리하고 문제를 푸는 게 중요.
- 예를 들어 DFS/BFS를 공부하면
- 이론 정리 (재귀/스택/큐 활용, 시간 복잡도)
- 대표 유형 문제 3~5개 선정
- 문제를 풀면서 매번 "이론을 적용했는가?" 체크.
✅ 오답 정리 필수
- "왜 틀렸는지"를 코드와 함께 블로그/노트에 기록.
- 단순히 답만 적는 게 아니라, 내가 어떤 실수를 했고, 어떻게 보완할 수 있는지 정리.
- 한 달 뒤 다시 풀어보고 성장 확인.
✅ 주간 회고
- 매주 어떤 유형을 공부했고, 내가 전략적으로 문제를 해결했는지 점검.
- 해결한 문제 중 가장 어려웠던 문제를 다시 리뷰.
- "앞으로 어떤 개념을 더 보강할지" 플랜 수정.
3. 실천 플랜
✅ 이번 주 목표:
- 문제 풀기 전에 접근법을 문장으로 적는 습관 들이기.
- 하루 한 문제라도 반례 생성해서 직접 검증하기.
- "이론 -> 문제 풀이 -> 오답 정리" 루틴을 실천하기.
✅ 한 달 목표:
- 이론 정리 + 문제풀이 패턴을 몸에 익히기.
- 최소 5가지 알고리즘을 이론부터 정리하고, 대표 유형 문제 풀이.
- 내 코드의 시간복잡도 분석하는 습관 들이기.
이를 위해 계획을 세워보고자 다시 어르신께 조언을 구해보았다.
조언을 바탕으로 정리해보았다.
계획
- 단순히 "열심히 해야지!"가 아니라, 측정 가능하고 지속 가능한 방식으로 접근하는 게 중요.
📌 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. 꾸준히 하기 위한 동기부여
- 스터디 참여 (같이 하면 포기 확률 ↓)
- 리더보드 체크 (백준/프로그래머스 티어 목표 설정)
- 리워드 시스템 (목표 달성하면 좋아하는 음식 먹기, 쉬는 날 갖기)
- 블로그에 정리하면서 학습 내용 시각화
- 다른 사람 풀이 리뷰 & 피드백 받기
🔥 실행!
👉 우선 이번 주 목표를 정해볼까?
예를 들면:
- 이번 주 목표: DFS/BFS 유형 문제 5개 풀고, 풀이 과정 정리
- 하루 목표: 문제 1개 풀이 + 반례 생성 + 시간복잡도 분석
실행
학습 내용을 기준으로 주간플랜을 짜는 건 시기상 힘들 것 같아서
학습 내용 기반 / 목표 기반 / 난이도 기반 / 실전 대비 기반의 방법을 짜보고 이를 계획에 따라 적절히 섞으려 한다.
결론적으로 나온 3개월 알고리즘 마스터 플랜
🔥 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 / 게임)
- 한 주 목표 달성 시 → 맛있는 거 먹기
- 한 달 목표 달성 시 →
🚀 실행 플랜
📌 이번 주부터 바로 실천!
✅ 이번 주 목표:
- DFS/BFS 5문제 풀기
- 문제 풀이 전에 접근법 적기
- 반례 직접 만들고 시간복잡도 분석
- 블로그에 DFS/BFS 정리 + 어려웠던 문제 2개 정리
앞으로 주차별로 차근차근 포스팅해서 올려보려한다!
파이팅!
'CS & 알고리즘 > 알고리즘' 카테고리의 다른 글
알고리즘 3개월 마스터 플랜 - 1일차 (0) | 2025.02.20 |
---|---|
[백준] 수 정렬하기 (2750) - Java 자바 (0) | 2025.02.20 |
알고리즘 3개월 마스터 플랜 1주차 (0) | 2025.02.19 |
[알고리즘] 순열(Permutation) (0) | 2023.03.23 |
[알고리즘] 부분집합 & 조합 + 비트 연산자 (0) | 2023.03.23 |