# unknown > | 알고리즘 | 문제 수 | 평가 | 비고 | |---------|--------|------|------| | **문자열** | 34개 | ⭐⭐⭐⭐⭐ | 매우 강함 | | **정렬** | 29개 | ⭐⭐⭐⭐⭐ | 매우 강함 | | **DFS/BFS** | 23개 | ⭐⭐⭐⭐ | 강함 | | **브루트포스** | 21개 | ⭐⭐⭐⭐ | 강함 | | **그리디** | 20개 | ⭐⭐⭐⭐ | 강함 | - Author: Min Joon Kim - Repository: Joonking/COTE - Version: 20251119224310 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-08 - Source: https://github.com/Joonking/COTE - Web: https://mule.run/skillshub/@@Joonking/COTE~unknown:20251119224310 --- # 📊 코딩 실력 분석 및 개선 방향 **마지막 업데이트:** 2025-11-19 **총 문제 수:** 1,166개 (백준 기준) --- ## 🎯 현재 실력 요약 ### 종합 평가 - **현재 레벨:** 중급 (Mid-Level) - **강점:** 기본 알고리즘, 자료구조 활용 - **약점:** 고급 알고리즘, 최적화 기법 - **특징:** 체계적 학습, 자세한 주석 작성 --- ## 📈 알고리즘별 풀이 현황 ### ✅ 강한 알고리즘 (20개 이상) | 알고리즘 | 문제 수 | 평가 | 비고 | |---------|--------|------|------| | **문자열** | 34개 | ⭐⭐⭐⭐⭐ | 매우 강함 | | **정렬** | 29개 | ⭐⭐⭐⭐⭐ | 매우 강함 | | **DFS/BFS** | 23개 | ⭐⭐⭐⭐ | 강함 | | **브루트포스** | 21개 | ⭐⭐⭐⭐ | 강함 | | **그리디** | 20개 | ⭐⭐⭐⭐ | 강함 | **강점 분석:** - 문자열 처리와 정렬은 확실히 마스터한 상태 - 탐색 알고리즘(DFS/BFS) 이해도가 높음 - 완전탐색 접근이 자연스러움 ### 🟡 보통 알고리즘 (10~19개) | 알고리즘 | 문제 수 | 평가 | 개선 필요 사항 | |---------|--------|------|---------------| | **해시** | 13개 | ⭐⭐⭐ | unordered_set/map 활용 능숙 | | **기하학** | 12개 | ⭐⭐⭐ | 수학적 사고력 향상 필요 | | **DP** | 10개 | ⭐⭐ | **집중 연습 필요** | **분석:** - 해시는 기본 사용은 가능하나 고급 활용은 부족 - DP는 문제 수가 현저히 적음 → **최우선 보완 대상** - 기하학은 수학적 접근이 필요하여 상대적으로 약함 ### ⚠️ 약한 알고리즘 (10개 미만) | 알고리즘 | 문제 수 | 평가 | 우선순위 | |---------|--------|------|---------| | **자료구조** | 7개 | ⭐⭐ | 높음 | | **누적합** | 4개 | ⭐⭐ | 중간 | | **다익스트라** | 4개 | ⭐⭐ | 높음 | | **두포인터** | 4개 | ⭐⭐ | 중간 | | **분리집합** | 4개 | ⭐ | 높음 | | **트리** | 4개 | ⭐⭐ | 높음 | | **이분탐색** | 7개 | ⭐⭐⭐ | 높음 | | **분할정복** | 3개 | ⭐ | 중간 | | **최소스패닝트리** | 3개 | ⭐ | 낮음 | | **플로이드-워셜** | 3개 | ⭐ | 중간 | | **백트래킹** | 4개 | ⭐⭐ | 높음 | | **벨만-포드** | 2개 | ⭐ | 낮음 | | **위상정렬** | 2개 | ⭐ | 중간 | | **비트마스킹** | 1개 | ⭐ | 높음 | | **애드혹** | 1개 | ⭐ | 낮음 | **심각한 약점:** 1. **그래프 최단경로 알고리즘** (다익스트라, 벨만-포드, 플로이드-워셜) 2. **고급 자료구조** (세그먼트 트리, 펜윅 트리 등) 3. **백트래킹** (조합 탐색 문제에 필수) 4. **비트마스킹** (최적화와 상태 표현에 필수) 5. **이분탐색** (효율적 탐색의 핵심) --- ## 💻 코딩 스타일 분석 ### ✅ 좋은 습관 #### 1. 주석 작성이 매우 자세함 ```cpp // 바텀업 방식으로 구현하기 // D[i] : i에서 1로 만드는 데 걸리는 최소 연산 횟수 // D[i] = D[i-1] + 1 ``` - **장점:** 나중에 코드를 다시 봐도 이해하기 쉬움 - **유지:** 계속 이렇게 작성하세요! #### 2. 빠른 입출력 최적화 ```cpp ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ``` - **장점:** 시간 제한이 빡빡한 문제에서 유리 - **유지:** 좋은 습관입니다 #### 3. STL 활용 능력 ```cpp vector> Bat; unordered_set Su1; ``` - **장점:** 적절한 자료구조 선택 - **유지:** 다양한 STL 계속 활용하세요 #### 4. 방향 배열 활용 ```cpp static int dx[4] = { 0, 0, -1, 1 }; static int dy[4] = { -1, 1, 0, 0 }; ``` - **장점:** 상하좌우 탐색이 깔끔함 - **유지:** 그래프 문제에 필수 패턴 ### ⚠️ 개선이 필요한 습관 #### 1. 변수명 규칙 (중요도: 높음) **현재:** ```cpp static vector> Bat; // 대문자 시작 static vector> Visited; int Temp; ``` **문제점:** - C++에서 일반적으로 변수는 소문자로 시작 (camelCase 또는 snake_case) - 대문자는 보통 클래스명이나 상수에 사용 **개선안:** ```cpp // camelCase (권장) static vector> bat; static vector> visited; int temp; // 또는 snake_case static vector> bat_field; static vector> is_visited; int temp_value; ``` **왜 중요한가:** - 협업 시 팀 코딩 컨벤션에 맞춰야 함 - 읽기 쉬운 코드 = 버그 적은 코드 - 기업 코딩테스트에서 코드 가독성도 평가 요소 #### 2. VLA 사용 자제 (중요도: 중간) **현재:** ```cpp int n, k; cin >> n >> k; int coins[n]; // Variable Length Array (VLA) ``` **문제점:** - C++ 표준이 아님 (C99 확장 기능) - 일부 컴파일러에서 에러 발생 가능 - 스택 오버플로우 위험 **개선안:** ```cpp int n, k; cin >> n >> k; vector coins(n); // vector 사용 (권장) // 또는 크기가 고정이면 int coins[1000]; // 충분히 큰 고정 배열 ``` #### 3. static 전역 변수 최소화 (중요도: 낮음) **현재:** ```cpp static int N; static vector D; ``` **문제점:** - 여러 테스트 케이스 실행 시 초기화 필요 - 함수형 프로그래밍과 맞지 않음 **개선안:** ```cpp // main 함수 내부에 선언하거나 int main() { int n; vector d; // ... } // 함수 파라미터로 전달 void dfs(int x, int y, vector>& bat) { // ... } ``` **단, 백준에서는:** - 단일 테스트 케이스면 static 사용해도 무방 - 편의성이 더 중요할 수 있음 - 실전에서는 상황에 맞게 선택 #### 4. nullptr vs NULL (중요도: 낮음) **현재:** ```cpp cin.tie(NULL); // 여기는 NULL cin.tie(nullptr); // 여기는 nullptr ``` **권장:** ```cpp // C++11 이후는 nullptr로 통일 cin.tie(nullptr); cout.tie(nullptr); ``` --- ## 🎓 학습 우선순위 및 로드맵 ### 🔥 최우선 (1-2개월) #### 1. 다이나믹 프로그래밍 (DP) 집중 공략 **현재 상태:** 10개 → **목표:** 50개 이상 **추천 학습 순서:** 1. **기초 DP** - 1D DP: 피보나치, 계단 오르기 (5문제) - 2D DP: LCS, 배낭 문제 (5문제) 2. **중급 DP** - LIS (최장 증가 부분 수열) - 구간 DP - 비트마스킹 DP (5문제) 3. **고급 DP** - 트리 DP - 확률 DP **추천 문제:** - 백준 DP 단계별 문제집 - 백준 CLASS 3, 4의 DP 문제 - 2293 (동전 1), 11053 (LIS), 9251 (LCS) #### 2. 이분탐색 (Binary Search) **현재 상태:** 3개 → **목표:** 20개 이상 **학습 포인트:** - 매개변수 탐색 (Parametric Search) 개념 - Lower bound / Upper bound 차이 - 실수 이분탐색 **추천 문제:** - 1920 (수 찾기), 2805 (나무 자르기) - 1654 (랜선 자르기), 2110 (공유기 설치) #### 3. 백트래킹 (Backtracking) **현재 상태:** 2개 → **목표:** 15개 이상 **학습 포인트:** - N-Queen 문제 - 순열/조합 생성 - 가지치기 (Pruning) 기법 **추천 문제:** - 15649 (N과 M 시리즈 1~12) - 9663 (N-Queen) ### 📚 중요 (2-3개월) #### 4. 그래프 최단경로 **다익스트라, 벨만-포드, 플로이드-워셜** **현재 상태:** 각 2~4개 → **목표:** 각 10개 이상 **학습 순서:** 1. 다익스트라 (우선순위 큐 활용) 2. 플로이드-워셜 (모든 쌍 최단경로) 3. 벨만-포드 (음수 간선 처리) **추천 문제:** - 1753 (최단경로 - 다익스트라) - 11404 (플로이드) - 11657 (타임머신 - 벨만포드) #### 5. 고급 자료구조 **세그먼트 트리, 펜윅 트리, 우선순위 큐** **학습 포인트:** - 구간 쿼리 처리 - 동적 최댓값/최솟값 - Lazy Propagation #### 6. 비트마스킹 **현재 상태:** 1개 → **목표:** 10개 이상 **학습 포인트:** - 비트 연산 (AND, OR, XOR, Shift) - 부분집합 생성 - DP + 비트마스킹 (외판원 문제) ### 🔄 지속 유지 #### 7. 강한 알고리즘 심화 학습 - **문자열:** KMP, Trie, 접미사 배열 - **정렬:** 커스텀 정렬, 안정 정렬 - **DFS/BFS:** 응용 문제 (최단경로, 위상정렬) --- ## 📊 학습 전략 ### 일일 학습 목표 **평일 (1시간)** - 새 문제: 1개 (취약 알고리즘 위주) - 복습: 이전 문제 1개 다시 풀어보기 **주말 (3시간)** - 새 문제: 3-5개 - 주제별 집중 학습 (DP, 이분탐색 등) - 코드 리팩토링 및 최적화 ### 주간 학습 계획 (예시) | 요일 | 주제 | 세부 내용 | |-----|------|-----------| | **월** | DP | 1D DP 문제 1개 | | **화** | 이분탐색 | 기본 이분탐색 1개 | | **수** | 백트래킹 | N과 M 시리즈 1개 | | **목** | 복습 | 월~수 문제 다시 풀기 | | **금** | 자유 | 쉬운 문제로 자신감 회복 | | **토** | 집중학습 | 주제 하나를 3-5문제 | | **일** | 정리 | 주간 학습 내용 정리 | ### 3개월 목표 **1개월차: 기초 다지기** - DP 기초 20문제 - 이분탐색 10문제 - 백트래킹 10문제 - **목표 문제 수:** +40개 **2개월차: 심화 학습** - DP 심화 20문제 - 그래프 최단경로 15문제 - 비트마스킹 5문제 - **목표 문제 수:** +40개 **3개월차: 종합 응용** - 고급 자료구조 10문제 - 복합 알고리즘 문제 20문제 - 기업 기출 문제 10문제 - **목표 문제 수:** +40개 **총 3개월 목표:** 현재 1,165개 → **1,285개 이상** --- ## 🎯 목표별 도달 수준 ### 단기 목표 (3개월) - DP 문제 50개 달성 - 백준 CLASS 3 완료 - 프로그래머스 Level 2 문제 50% 이상 해결 ### 중기 목표 (6개월) - 모든 주요 알고리즘 최소 10문제 이상 - 백준 CLASS 4 완료 - 프로그래머스 Level 2 완료 ### 장기 목표 (1년) - 백준 골드 티어 달성 - 백준 CLASS 5 완료 - 프로그래머스 Level 3 50% 이상 해결 - 기업 코딩테스트 합격 수준 --- ## 🔍 코딩 스타일 개선 체크리스트 ### 즉시 적용 가능 - [ ] 변수명을 camelCase로 통일 (예: `bat`, `visited`, `tempValue`) - [ ] VLA 대신 vector 사용 - [ ] nullptr로 통일 (NULL 사용 중단) - [ ] 함수 분리 습관화 (main이 너무 길어지지 않게) ### 점진적 개선 - [ ] static 전역 변수 최소화 - [ ] const 키워드 적극 활용 - [ ] auto 키워드 적절히 사용 - [ ] 람다 함수 학습 및 활용 ### 장기 개선 - [ ] 객체지향 설계 학습 - [ ] 템플릿 프로그래밍 학습 - [ ] STL 소스코드 분석 --- ## 📌 마무리 조언 ### 당신의 강점 1. **체계적 학습:** 1,165개나 풀었다는 것은 꾸준함의 증거 2. **자세한 주석:** 이해도가 높고 복습이 쉬움 3. **기본기 탄탄:** 문자열, 정렬, 탐색은 마스터 수준 ### 개선 방향 1. **DP는 반드시 보완하세요** - 거의 모든 코테에 출제됨 2. **변수명 규칙 개선** - 가독성은 실력의 일부 3. **다양한 알고리즘 경험** - 편식하지 말고 골고루 ### 격려의 말 1,165개의 문제를 풀었다는 것은 대단한 성과입니다! 이미 상위 10% 안에 드는 실력입니다. 약점을 보완하면 골드~플래티넘 티어는 충분히 달성 가능합니다. **코딩테스트는 꾸준함이 실력입니다. 화이팅! 🔥** --- *이 문서는 주기적으로 업데이트하여 성장 과정을 기록하세요.*