algokit-mcp 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,43 +12,70 @@ AI 기반 힌트 생성, 문제 분석, 복습 템플릿 제공으로 효율적
12
12
  - 📝 **복습 템플릿**: 자동 생성되는 마크다운 복습 문서
13
13
  - 🧪 **코드 분석**: 제출 코드의 시간/공간 복잡도 분석 및 개선 제안
14
14
 
15
- ## 플랫폼별 설정 경로
15
+ ## 설치
16
16
 
17
- | 항목 | Claude Code | Codex | Gemini CLI |
18
- |------|-------------|-------|------------|
19
- | **Skills 기능명** | Skills | Agent Skills | Agent Skills |
20
- | **Skills 호출** | `/skill-name` | `$skill-name` or 자동 | 모델 자율 판단 |
21
- | **MCP 설정 (프로젝트)** | `.mcp.json` | `.codex/config.toml` | `.gemini/settings.json` |
22
- | **MCP 설정 (전역)** | `~/.claude.json` | `~/.codex/config.toml` | `~/.gemini/settings.json` |
23
- | **Skills (프로젝트)** | `.claude/skills/` | `.codex/skills/` | `.gemini/skills/` |
24
- | **Skills (전역)** | `~/.claude/skills/` | `~/.codex/skills/` | `~/.gemini/skills/` |
17
+ > 플랫폼별로 설치 방법이 다릅니다. Claude Code Plugin 마켓플레이스를 지원하고, Codex Gemini 수동 설정이 필요합니다.
25
18
 
26
- > Skills는 MCP 서버 첫 기동 시 감지된 플랫폼에 자동 설치됩니다.
19
+ ### Claude Code (Plugin Marketplace)
27
20
 
28
- ---
21
+ 마켓플레이스를 등록하고 플러그인을 설치하세요:
29
22
 
30
- ## 설치
23
+ ```
24
+ /plugin marketplace add itsme-shawn/AlgoKit-mcp
25
+ ```
31
26
 
32
- > **Skills 자동 설치**: MCP 서버 첫 기동 시 설치된 AI 에이전트를 자동으로 감지하여 Skills를 설치합니다.
27
+ ```
28
+ /plugin install algokit-mcp@algokit-plugin
29
+ ```
33
30
 
34
- ### Claude Code
31
+ ```
32
+ /reload-plugins
33
+ ```
34
+
35
+ 이 명령으로 **MCP 서버와 6개 Skills가 모두 설치**됩니다.
36
+
37
+ #### 자연어 설치
38
+
39
+ Claude Code에서 아래 문장을 그대로 입력해도 됩니다:
40
+
41
+ ```
42
+ algokit-mcp 플러그인을 마켓플레이스에서 설치해줘
43
+ ```
35
44
 
36
- #### 자동 설치
45
+ #### MCP만 별도 설치 (Skills 없이)
37
46
 
38
47
  ```bash
39
- # 전역 설정 (모든 프로젝트에서 사용)
40
48
  claude mcp add --scope user algokit -- npx -y algokit-mcp@latest
49
+ ```
50
+
51
+ ---
41
52
 
42
- # 프로젝트 설정 (.mcp.json 생성)
43
- claude mcp add --scope project algokit -- npx -y algokit-mcp@latest
53
+ ### Codex
44
54
 
55
+ Codex에게 아래 문장을 입력하세요:
45
56
 
46
57
  ```
58
+ 이 지시사항 대로 설치해줘 : https://raw.githubusercontent.com/itsme-shawn/AlgoKit-mcp/refs/heads/master/.codex/INSTALL.md
59
+ ```
60
+
61
+ ---
62
+
63
+ ### Gemini CLI
64
+
65
+ Gemini CLI에게 아래 문장을 입력하세요:
66
+
67
+ ```
68
+ 이 지시사항 대로 설치해줘 : https://raw.githubusercontent.com/itsme-shawn/AlgoKit-mcp/refs/heads/master/.gemini/INSTALL.md
69
+ ```
70
+
71
+ ---
47
72
 
48
- #### 수동 설치
73
+ ### 수동 설치 (모든 플랫폼)
49
74
 
50
- `~/.claude.json` (전역) 편집:
75
+ <details>
76
+ <summary>MCP 설정 직접 편집하기</summary>
51
77
 
78
+ **Claude Code** (`~/.claude.json`):
52
79
  ```json
53
80
  {
54
81
  "mcpServers": {
@@ -60,8 +87,14 @@ claude mcp add --scope project algokit -- npx -y algokit-mcp@latest
60
87
  }
61
88
  ```
62
89
 
63
- 또는 프로젝트 루트에 `.mcp.json` 생성 ([예시](.claude/examples/claude-code-config.json)):
90
+ **Codex** (`~/.codex/config.toml`):
91
+ ```toml
92
+ [mcp.servers.algokit]
93
+ command = "npx"
94
+ args = ["-y", "algokit-mcp@latest"]
95
+ ```
64
96
 
97
+ **Gemini CLI** (`~/.gemini/settings.json`):
65
98
  ```json
66
99
  {
67
100
  "mcpServers": {
@@ -73,278 +106,613 @@ claude mcp add --scope project algokit -- npx -y algokit-mcp@latest
73
106
  }
74
107
  ```
75
108
 
76
- #### Skills 위치
109
+ </details>
77
110
 
78
- | 등록 방식 | Skills 위치 |
79
- |----------|------------|
80
- | `--scope user` (전역) | `~/.claude/skills/` |
81
- | `--scope project` (`.mcp.json` 있음) | `<프로젝트>/.claude/skills/` |
82
111
 
112
+ ## Skills
83
113
 
84
- ---
114
+ **Skill 이름**: `algo:` (BOJ/프로그래머스 자동 선택)
85
115
 
86
- ### Codex
116
+ Claude Code, Codex, Gemini CLI 모두 동일한 `algo:` Skills를 지원합니다.
117
+ MCP 서버 첫 기동 시 감지된 에이전트에 자동으로 설치됩니다.
87
118
 
88
- #### 자동 설치
119
+ | Skill | 기능 | 사용 예시 |
120
+ |-------|------|----------|
121
+ | `algo:search` | 문제 검색 | `/algo:search 골드 DP 문제 추천해줘` |
122
+ | `algo:fetch` | 문제 본문 크롤링 | `/algo:fetch 11726` |
123
+ | `algo:hint` | 단계별 힌트 | `/algo:hint 11726` |
124
+ | `algo:code-review` | 코드 분석/피드백 | `/algo:code-review @11726.py` |
125
+ | `algo:blank` | 빈칸 연습 코드 생성 | `/algo:blank @11726.py` |
126
+ | `algo:review` | 복습 문서 생성 | `/algo:review 11726` |
89
127
 
90
- ```bash
91
- # 전역 설치
92
- codex mcp add algokit -- npx -y algokit-mcp@latest
93
- ```
128
+ > 자연어로 질문해도 AI가 맥락을 파악하여 Skill을 자동 호출합니다.
129
+ > Skill(`/algo:*`)을 사용하면 의도가 더 명확해져 정확한 응답을 받을 수 있습니다.
94
130
 
95
- #### 수동 설치
131
+ <details>
132
+ <summary><b>Skills 상세 설명</b></summary>
96
133
 
97
- `~/.codex/config.toml` (전역) 또는 `.codex/config.toml` (프로젝트) 편집 ([예시](.claude/examples/codex-config.toml)):
134
+ #### `algo:search` 문제 검색
98
135
 
99
- ```toml
100
- [mcp.servers.algokit]
101
- command = "npx"
102
- args = ["-y", "algokit-mcp@latest"]
103
- ```
136
+ 난이도, 태그, 키워드로 백준/프로그래머스 문제를 검색합니다. 플랫폼 키워드(`백준`, `프로그래머스`)가 없으면 어떤 플랫폼인지 되묻습니다.
137
+
138
+ - BOJ: 티어(브론즈~루비), 태그(`dp`, `graph` 등), 정렬 옵션 지원
139
+ - 프로그래머스: 레벨(1~5), 인기순/최신순 정렬 지원
140
+ - 검색 후 `/algo:hint`, `/algo:review` 등 후속 스킬 연계 제안
141
+
142
+ #### `algo:fetch` — 문제 본문 크롤링
143
+
144
+ 문제 전문(설명, 입출력 형식, 예제, 제한 조건)을 가져옵니다. URL 입력 시 플랫폼 자동 판별, 숫자만 입력 시 플랫폼 확인 후 진행합니다.
145
+
146
+ - BOJ: `acmicpc.net` 크롤링 (시간/메모리 제한 포함)
147
+ - 프로그래머스: `school.programmers.co.kr` 크롤링 (제한사항 포함)
148
+ - 캐시 30일, 재시도 최대 2회
149
+
150
+ #### `algo:hint` — 단계별 힌트
151
+
152
+ 문제를 분석하고 사용자 상황에 맞는 **1개 레벨의 힌트만** 제공합니다. 한 번에 모든 힌트를 보여주지 않고, 대화를 통해 점진적으로 안내합니다.
153
+
154
+ | Level | 시점 | 내용 |
155
+ |-------|------|------|
156
+ | Level 1 | 처음 막혔을 때 | 알고리즘명 없이 구조적 특징만 암시 |
157
+ | Level 2 | "더 알려줘" 요청 | 알고리즘 유형 + 핵심 아이디어 |
158
+ | Level 3 | "정답 알려줘" 요청 | 단계별 전략 + 의사코드 수준 설명 |
159
+
160
+ #### `algo:blank` — 빈칸 연습 코드 생성
161
+
162
+ 완성된 풀이 코드의 핵심 로직을 `____`로 가린 연습 파일을 생성합니다. 원본 파일은 수정하지 않고 `_blank` 접미사 파일을 새로 만듭니다.
163
+
164
+ - 빈칸 대상: 점화식, 자료구조 초기화, 핵심 조건문, 방문 처리 등
165
+ - `// TODO N: 설명` 주석으로 무엇을 채워야 하는지 안내 (정답은 미제공)
166
+ - import, 클래스 시그니처, main 블록은 그대로 유지
167
+
168
+ #### `algo:code-review` — 코드 분석/피드백
169
+
170
+ 풀이 코드의 정확성, 시간/공간 복잡도를 분석하고 개선점을 제안합니다.
104
171
 
105
- #### Skills 위치
172
+ | 분석 타입 | 내용 |
173
+ |-----------|------|
174
+ | `full` (기본) | 정확성 + 복잡도 + 개선점 + 스타일 |
175
+ | `debug` | 에러 원인, 로직 오류, 엣지 케이스 |
176
+ | `hint` | 핵심 개념, 접근 방향 |
177
+ | `review` | 스타일, 가독성, 네이밍, 구조 |
106
178
 
107
- | 등록 방식 | Skills 위치 |
108
- |----------|------------|
109
- | 프로젝트 (`.codex/` 있음) | `<프로젝트>/.codex/skills/` |
110
- | 전역 (`~/.codex/` 있음) | `~/.codex/skills/` |
179
+ #### `algo:review` 복습 문서 생성
180
+
181
+ 풀이를 마친 후 학습 내용을 정리하는 마크다운 복습 문서(`_REVIEW.md`) 생성합니다. MCP 서버가 템플릿과 가이드 프롬프트를 제공하고, AI가 사용자와 대화하며 섹션별로 작성합니다.
182
+
183
+ - 포함 내용: 문제 요약, 사고흐름, 핵심아이디어, 풀이 코드 + 로직 설명, 데이터 흐름 추적, 실수 포인트, 관련 문제
184
+ - 사용자 코드 기반 맞춤형 분석
185
+
186
+ </details>
111
187
 
112
188
  ---
113
189
 
114
- ### Gemini CLI
190
+ ## 사용 시나리오
115
191
 
116
- #### 자동 설치
192
+ > 모든 결과는 AlgoKit MCP 서버를 실제 호출하여 얻은 데이터입니다.
117
193
 
118
- ```bash
119
- # 전역 설치
120
- gemini mcp add algokit -- npx -y algokit-mcp@latest
121
- ```
194
+ 하나의 문제에 대해 **탐색부터 복습까지** 전 과정을 지원합니다.
122
195
 
123
- #### 수동 설치
196
+ | 단계 | 기능 | Skill |
197
+ |:---:|------|-------|
198
+ | 1 | 문제 검색 | `algo:search` |
199
+ | 2 | 문제 요약 | `algo:fetch` |
200
+ | 3 | 단계별 힌트 | `algo:hint` |
201
+ | 4 | 빈칸 힌트 | `algo:blank` |
202
+ | 5 | 코드 리뷰 | `algo:code-review` |
203
+ | 6 | 복습 정리 | `algo:review` |
124
204
 
125
- `~/.gemini/settings.json` (전역) 또는 `.gemini/settings.json` (프로젝트) 편집 ([예시](.claude/examples/gemini-config.json)):
205
+ ---
126
206
 
127
- ```json
128
- {
129
- "mcpServers": {
130
- "algokit": {
131
- "command": "npx",
132
- "args": ["-y", "algokit-mcp@latest"]
133
- }
134
- }
135
- }
207
+ ### 1. 문제 검색
208
+
209
+ #### User:
210
+ ```
211
+ BOJ에서 실버상위~골드 난이도 DP 문제 찾아줘
136
212
  ```
137
213
 
138
- #### Skills 위치
214
+ Skill 사용 시,
215
+ ```
216
+ /algo:search BOJ에서 실버상위~골드 난이도 DP 문제 찾아줘
217
+ ```
139
218
 
140
- | 등록 방식 | Skills 위치 |
141
- |----------|------------|
142
- | 프로젝트 (`.gemini/` 있음) | `<프로젝트>/.gemini/skills/` |
143
- | 전역 (`~/.gemini/` 있음) | `~/.gemini/skills/` |
219
+ #### AI Agent:
144
220
 
145
- ## MCP 도구
221
+ ```
222
+ ⏺ Skill(algo:search)
223
+ ⎿ Successfully loaded skill
146
224
 
147
- ### 백준 (BOJ)
225
+ BOJ에서 실버 상위~골드 난이도 DP 문제를 검색하겠습니다.
148
226
 
149
- | 도구 | 설명 |
150
- |------|------|
151
- | `search_problems_boj` | 문제 검색 (티어, 태그, 키워드) |
152
- | `get_problem_boj` | 문제 상세 조회 |
153
- | `search_tags_boj` | 알고리즘 태그 검색 |
154
- | `fetch_problem_content_boj` | 문제 본문 스크래핑 |
155
- | `analyze_problem_boj` | 문제 분석 및 힌트 가이드 |
156
- | `generate_hint_boj` | 3단계 힌트 생성 |
157
- | `generate_review_template_boj` | 복습 템플릿 생성 |
158
- | `analyze_code_submission_boj` | 코드 분석 및 피드백 |
227
+ algokit - search_problems_boj (MCP)
228
+ (tags: "dp", level_min: "8", level_max: "15", sort: "level", direction: "asc")
159
229
 
160
- ### 프로그래머스 (Programmers)
230
+ **총 1909개 문제** (1페이지)
161
231
 
162
- | 도구 | 설명 |
163
- |------|------|
164
- | `search_problems_programmers` | 문제 검색 (난이도, 카테고리) |
165
- | `get_problem_programmers` | 문제 상세 조회 |
166
- | `fetch_problem_content_programmers` | 문제 본문 스크래핑 |
167
- | `analyze_problem_programmers` | 문제 분석 |
168
- | `generate_hint_programmers` | 힌트 생성 |
169
- | `generate_review_template_programmers` | 복습 템플릿 |
170
- | `analyze_code_submission_programmers` | 코드 분석 |
232
+ 1,909개의 DP 문제가 Silver III ~ Gold I 범위에 있습니다.
171
233
 
172
- ## Skills
234
+ Silver III (실버 3)
173
235
 
174
- **Skill 이름**: `algo:` (BOJ/프로그래머스 자동 선택)
236
+ ┌───────┬────────────────┬──────────┐
237
+ │ 번호 │ 제목 │ 해결자 │
238
+ ├───────┼────────────────┼──────────┤
239
+ │ 1463 │ 1로 만들기 │ 87,355명 │
240
+ ├───────┼────────────────┼──────────┤
241
+ │ 9095 │ 1, 2, 3 더하기 │ 72,673명 │
242
+ ├───────┼────────────────┼──────────┤
243
+ │ 11726 │ 2×n 타일링 │ 65,411명 │
244
+ ├───────┼────────────────┼──────────┤
245
+ │ 2579 │ 계단 오르기 │ 64,700명 │
246
+ ├───────┼────────────────┼──────────┤
247
+ │ 14501 │ 퇴사 │ 42,532명 │
248
+ └───────┴────────────────┴──────────┘
175
249
 
176
- Claude Code, Codex, Gemini CLI 모두 동일한 `algo:` Skills를 지원합니다.
177
- MCP 서버 첫 기동 시 감지된 에이전트에 자동으로 설치되며, 수동으로도 설치할 수 있습니다.
178
-
179
- ### 수동 설치
250
+ 다음 페이지에서 Silver II ~ Gold 난이도 문제도 볼까요?
251
+ ```
180
252
 
181
- ```bash
182
- # Claude Code
183
- cp -r skills/* ~/.claude/skills/ # 전역
184
- cp -r skills/* .claude/skills/ # 프로젝트
253
+ ---
185
254
 
186
- # Codex
187
- cp -r skills/* ~/.codex/skills/ # 전역
188
- cp -r skills/* .codex/skills/ # 프로젝트
255
+ ### 2. 문제 내용 요약
189
256
 
190
- # Gemini CLI
191
- cp -r skills/* ~/.gemini/skills/ # 전역
192
- cp -r skills/* .gemini/skills/ # 프로젝트
257
+ #### User:
258
+ ```
259
+ BOJ 11726 문제 내용 요약해줘
193
260
  ```
194
261
 
195
- ### 사용 예시
262
+ Skill 사용 시,
263
+ ```
264
+ /algo:fetch 11726
265
+ ```
196
266
 
197
- #### `algo:search` - 문제 검색
267
+ #### AI Agent:
198
268
 
199
269
  ```
200
- You: "골드 난이도 DP 문제 추천해줘"
270
+ algokit - fetch_problem_content_boj (MCP)(problem_id: 11726)
271
+
272
+ ⏺ BOJ 11726 - 2×n 타일링
201
273
 
202
- Claude: "백준에서 골드 티어의 DP 문제를 검색했습니다.
274
+ 2×n 크기의 직사각형을 1×2, 2×1 타일로 빈틈없이 채우는 방법의 수를
275
+ 구하는 문제입니다.
203
276
 
204
- **추천 문제 3개:**
205
- 1. 🥇 [G5] 12865번 - 평범한 배낭 (✅ 16,234명)
206
- 2. 🥇 [G4] 9251번 - LCS (✅ 13,892명)
207
- 3. 🥇 [G3] 1932번 - 정수 삼각형 (✅ 18,234명)
277
+ ┌─────────────┬──────────────────────────────────┐
278
+ │ 항목 │ 내용 │
279
+ ├─────────────┼──────────────────────────────────┤
280
+ 입력 │ 정수 n (1 n 1,000)
281
+ ├─────────────┼──────────────────────────────────┤
282
+ │ 출력 │ 방법의 수를 10,007로 나눈 나머지 │
283
+ ├─────────────┼──────────────────────────────────┤
284
+ │ 시간/메모리 │ 1초 / 256MB │
285
+ └─────────────┴──────────────────────────────────┘
208
286
 
209
- 어떤 문제부터 시작하시겠어요?"
287
+ 예제: n=2 → 2, n=9 → 55
210
288
  ```
211
289
 
290
+ ---
291
+
292
+ ### 3. 단계별 힌트
293
+
294
+ #### User:
295
+ ```
296
+ 이 문제, 접근에 대한 힌트를 줘
212
297
  ```
213
- You: "https://www.acmicpc.net/problem/1927"
214
298
 
215
- Claude: "백준 1927번 '최소 힙' 문제를 조회했습니다.
299
+ Skill 사용 시,
300
+ ```
301
+ /algo:hint 11726
302
+ ```
216
303
 
217
- **문제 정보:**
218
- - 난이도: 🥈 Silver I
219
- - 분류: 자료구조, 우선순위 큐
220
- - 해결: 28,456명 | 정답률: 47.2%
304
+ #### AI Agent:
221
305
 
222
- 본문을 보시겠어요? (/algo:fetch)"
223
306
  ```
307
+ ⏺ algokit - analyze_problem_boj (MCP)(problem_id: 11726)
308
+
309
+ ⏺ BOJ 11726 — 2×n 타일링 (Silver III)
310
+
311
+ Level 1 힌트: 문제 분석
312
+
313
+ 작은 경우부터 직접 그려보세요. n=1, n=2, n=3, n=4일 때 2×n 직사각형을
314
+ 채우는 방법이 각각 몇 가지인지 손으로 나열해 보면, 이전 결과들이 다음
315
+ 결과를 만드는 데 재활용되는 패턴이 보일 겁니다.
224
316
 
225
- #### `algo:hint` - 단계별 힌트
317
+ "n번째를 채우려면 직전에 어떤 상태에서 올 수 있는가?"를 생각해 보세요.
226
318
 
319
+ ---
320
+ 더 구체적인 힌트가 필요하면 말씀해 주세요!
227
321
  ```
228
- You: "1927번 힌트 줘"
229
322
 
230
- Claude: "**💡 Level 1 힌트 (접근 방향)**
323
+ > MCP 서버가 구조화된 데이터 + 가이드 프롬프트를 반환하면,
324
+ > Claude가 문제에 맞는 자연어 분석을 생성합니다.
231
325
 
232
- 이 문제는 **우선순위 큐(Priority Queue)** 자료구조를 사용합니다.
233
- Python의 `heapq` 모듈 또는 C++의 `priority_queue`를 활용하면
234
- O(log N) 시간에 최솟값을 찾을 수 있어요.
326
+ ---
327
+
328
+ #### 힌트 받기
235
329
 
236
- 구체적인 힌트가 필요하신가요?"
330
+ #### User:
237
331
  ```
332
+ 잘 안 풀리네. 힌트를 좀 더 줘
333
+ ```
334
+
335
+ #### AI Agent:
238
336
 
239
337
  ```
240
- You: "더 구체적으로 알려줘"
338
+ Level 2 힌트: 핵심 아이디어
241
339
 
242
- Claude: "**💡 Level 2 힌트 (구현 방법)**
340
+ 문제는 다이나믹 프로그래밍(DP) 문제입니다.
243
341
 
244
- 1. **최소 힙** 사용 (Python: heapq, C++: priority_queue<int, greater<int>>)
245
- 2. x가 0이 아니면 → `heappush(x)`
246
- 3. x가 0이면 → `heappop()` (빈 경우 0 출력)
342
+ 핵심은 2×n 직사각형의 오른쪽 열을 채우는 방법이 딱 두 가지뿐이라는
343
+ 점입니다:
247
344
 
248
- 시간복잡도: O(N log N)
249
- 공간복잡도: O(N)
345
+ 1. 세로 타일 1개 (2×1) 나머지는 2×(n-1) 채우기
346
+ 2. 가로 타일 2개 (1×2 두 개) → 나머지는 2×(n-2) 채우기
250
347
 
251
- 코드 예시를 보시겠어요? (/algo:hint 정답)"
348
+ 즉, f(n)을 구하려면 f(n-1)과 f(n-2)만 알면 됩니다.
349
+
350
+ ---
351
+ 더 상세한 풀이 가이드가 필요하면 말씀해 주세요.
252
352
  ```
253
353
 
254
- #### `algo:code-review` - 코드 분석
354
+ 사용자 상황에 따라 **한 번에 1개 레벨만** 제공:
355
+
356
+ | Level | 시점 | 제공 내용 |
357
+ |-------|------|----------|
358
+ | Level 1 | 처음 시도할 때 | 알고리즘명 없이 구조적 특징만 암시 |
359
+ | Level 2 | "더 알려줘" 요청 시 | 알고리즘 유형 명시 + 핵심 아이디어 |
360
+ | Level 3 | "정답 알려줘" 요청 시 | 단계별 전략 + 의사코드 수준 설명 |
361
+
362
+ ---
363
+
364
+ ### 4. 빈칸 힌트
365
+
366
+ #### User:
367
+ ```
368
+ 정답 코드에 빈 칸을 뚫어서 힌트를 줘
369
+ 11726_blank.py 에 작성해줘
370
+ ```
255
371
 
372
+ Skill 사용 시,
373
+ ```
374
+ /algo:blank @11726.py
256
375
  ```
257
- You: "1927번 내 코드 분석해줘"
258
- You: [Python 코드 붙여넣기]
259
376
 
260
- Claude: "코드를 분석했습니다! ✨
377
+ #### AI Agent:
261
378
 
262
- **✅ 좋은 점:**
263
- - heapq 모듈을 올바르게 사용
264
- - 시간복잡도 O(N log N) 달성
379
+ ```
380
+ ⏺ algokit - fetch_problem_content_boj (MCP)(problem_id: 11726)
381
+
382
+ ⏺ Write(11726_blank.py)
383
+ ⎿ Wrote 26 lines to 11726_blank.py
384
+ 1 # BOJ 11726 - 2×n 타일링
385
+ 2 # https://www.acmicpc.net/problem/11726
386
+ 3 #
387
+ 4 # 점화식 힌트:
388
+ 5 # - 맨 오른쪽에 세로 타일 1개 → f(n-1)
389
+ 6 # - 맨 오른쪽에 가로 타일 2개 → f(n-2)
390
+ 7
391
+ 8 n = int(input())
392
+ 9
393
+ 10 # TODO 1: dp 배열 초기화 (크기: n+1, 초깃값: 0)
394
+ 11 dp = ____
395
+ 12
396
+ 13 # TODO 2: 기저 조건 설정
397
+ 14 dp[1] = ____
398
+ 15 dp[2] = ____
399
+ 16
400
+ 17 # TODO 3: 점화식을 이용해 dp[3] ~ dp[n] 채우기
401
+ 18 for i in range(3, n + 1):
402
+ 19 dp[i] = ____
403
+ 20
404
+ 21 # TODO 4: 결과 출력 (10007로 나눈 나머지)
405
+ 22 print(____)
406
+
407
+ ⏺ 11726_blank.py에 빈칸 버전을 작성했습니다. 총 4개의 TODO가 있습니다:
408
+
409
+ ┌──────┬─────────────────────────────────────────────────┐
410
+ │ TODO │ 힌트 │
411
+ ├──────┼─────────────────────────────────────────────────┤
412
+ │ 1 │ dp 배열을 어떤 크기로, 어떻게 초기화할지 │
413
+ ├──────┼─────────────────────────────────────────────────┤
414
+ │ 2 │ dp[1]과 dp[2]의 기저값 (직접 손으로 세어보세요) │
415
+ ├──────┼─────────────────────────────────────────────────┤
416
+ │ 3 │ dp[i] = ? — Level 2 힌트에서 알려드린 점화식! │
417
+ ├──────┼─────────────────────────────────────────────────┤
418
+ │ 4 │ 최종 출력 시 모듈러 연산을 어디서 적용할지 │
419
+ └──────┴─────────────────────────────────────────────────┘
420
+
421
+ 빈칸을 ____ 부분에 채워보세요. 막히면 말씀해 주세요!
422
+ ```
265
423
 
266
- **⚠️ 개선 가능:**
267
- 1. `sys.stdin.readline()` 사용 → 입력 속도 개선 (30% 빠름)
268
- 2. 빈 힙 체크를 `if heap:` 대신 `if len(heap):`로 명시
424
+ ---
269
425
 
270
- **예상 성능:**
271
- - 현재: 약 300ms
272
- - 개선 후: 약 200ms
426
+ ### 5. 코드 리뷰
273
427
 
274
- 수정 코드를 보여드릴까요?"
428
+ #### User:
429
+ ```
430
+ @BOJ/10000~/11726/11726.py
431
+ 내 풀이를 보고 리뷰해줘
275
432
  ```
276
433
 
277
- #### `algo:review` - 복습 템플릿
434
+ Skill 사용 시,
435
+ ```
436
+ /algo:code-review @11726.py
437
+ ```
438
+
439
+ #### AI Agent:
278
440
 
279
441
  ```
280
- You: "1927번 복습 문서 만들어줘"
442
+ ⏺ Skill(algo:code-review)
443
+ ⎿ Successfully loaded skill
444
+
445
+ ⏺ algokit - analyze_code_submission_boj (MCP)
446
+ (problem_id: 11726, language: "python", analysis_type: "review")
447
+
448
+ ⏺ BOJ 11726 - 2×n 타일링 코드 리뷰
449
+
450
+ ✅ 정확성
281
451
 
282
- Claude: "복습 템플릿을 생성했습니다! 📝
452
+ 피보나치 점화식 dp[i] = dp[i-1] + dp[i-2]를 정확히 적용했고,
453
+ 모듈러 연산도 올바르게 처리했습니다. 정답 코드입니다.
283
454
 
284
- # 백준 1927번 - 최소 힙
455
+ ⏱️ 복잡도
285
456
 
286
- ## 문제 요약
287
- 최솟값을 빠르게 찾는 자료구조 구현
457
+ - 시간: O(n) — 최적
458
+ - 공간: O(n) (고정 1001 크기 배열)
288
459
 
289
- ## 핵심 알고리즘
290
- - **우선순위 큐** (최소 힙)
291
- - 삽입: O(log N), 삭제: O(log N)
460
+ 💡 개선 포인트
292
461
 
293
- ## 풀이 과정
294
- 1. heapq 모듈 import
295
- 2. 입력에 따라 push/pop 수행
296
- ...
462
+ 1. 배열 크기 고정 (1001)
463
+ n + 1 크기로 잡는 게 의도가 더 명확합니다.
297
464
 
298
- 템플릿을 파일로 저장하시겠어요?"
465
+ 2. 공간 최적화 가능
466
+ 이전 두 값만 사용하므로 변수 두 개로 줄일 수 있습니다:
467
+ a, b = 1, 2
468
+ for _ in range(3, n + 1):
469
+ a, b = b, (a + b) % 10007
470
+
471
+ 총평
472
+
473
+ DP 기본 문제를 깔끔하게 풀었습니다. 점화식 도출, 모듈러 처리,
474
+ 입력 최적화 모두 잘 적용되어 수정할 부분이 거의 없는 코드입니다.
299
475
  ```
300
476
 
301
477
  ---
302
478
 
303
- ## 학습 워크플로우
304
-
305
- ### 새 문제 접근하기
479
+ ### 6. 복습 정리
306
480
 
481
+ #### User:
482
+ ```
483
+ 복습 문서 만들어줘
307
484
  ```
308
- 1. You: "골드 3~5 DP 문제 추천"
309
- → Claude: [문제 3개 추천]
310
485
 
311
- 2. You: "1932번 본문 보여줘"
312
- → Claude: [문제 본문 표시]
486
+ Skill 사용 시,
487
+ ```
488
+ /algo:review 11726
489
+ ```
313
490
 
314
- 3. You: "힌트 줘"
315
- → Claude: [Level 1 힌트]
491
+ #### AI Agent:
316
492
 
317
- 4. You: "더 구체적으로"
318
- → Claude: [Level 2 힌트]
319
493
  ```
494
+ ⏺ Skill(algo:review)
495
+ ⎿ Successfully loaded skill
320
496
 
321
- ### 풀이 복습하기
497
+ algokit - generate_review_template_boj (MCP)
498
+ (problem_id: 11726, user_notes: "피보나치 점화식 dp[i] = dp[i-1] +
499
+ dp[i-2] 활용, 모듈러 연산 10007, O(n) 시간/공간")
322
500
 
501
+ ⏺ Write(BOJ/10000~/11726/11726_REVIEW.md)
502
+ ⎿ Wrote 142 lines to BOJ/10000~/11726/11726_REVIEW.md
323
503
  ```
324
- 1. You: "1932번 내 코드 분석해줘" + [코드]
325
- → Claude: [시간복잡도, 개선점 제시]
326
504
 
327
- 2. You: "복습 문서 만들어줘"
328
- Claude: [마크다운 템플릿 생성]
505
+ <!-- 아래는 생성된 REVIEW.md의 실제 내용입니다. -->
506
+ <!-- MCP 서버가 템플릿 + 가이드 프롬프트를 제공하고, AI가 사용자와 대화하며 작성합니다. -->
507
+
508
+ <details>
509
+ <summary><b>생성된 복습 문서 예시 보기</b></summary>
510
+
511
+ ````markdown
512
+ #### BOJ 11726 — 2×n 타일링
513
+
514
+ https://www.acmicpc.net/problem/11726
515
+
516
+ **문제 정보**
517
+
518
+ | 항목 | 내용 |
519
+ |------|------|
520
+ | 핵심 요구사항 | 2×n 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 10,007로 나눈 나머지 출력 |
521
+ | 입력 크기 | 1 ≤ n ≤ 1,000 |
522
+ | 시간/메모리 | 1초 / 256MB |
523
+ | 티어 | Silver III |
524
+ | 태그 | 다이나믹 프로그래밍 |
525
+ | 해결자 수 | 65,411명 (평균 시도 2.7회) |
526
+
527
+ **사고흐름**
528
+
529
+ - **첫 인상**: n이 작아질수록 경우의 수가 줄어드는 구조 → 작은 문제로 분할 가능
530
+ - **자료구조/알고리즘 선택**: DP (Bottom-Up)
531
+ - **선택 근거**: dp[n]을 구하기 위해 이전 상태(dp[n-1], dp[n-2])만 필요 → 점화식 도출 가능
532
+ - **특이 조건 처리**: 모듈러 연산을 매 단계 적용하여 오버플로우 방지
533
+ - **시간 복잡도 검증**: O(n) = O(1000) → 충분
534
+
535
+ **핵심아이디어**
536
+
537
+ 2×n 타일링의 마지막 열 배치를 기준으로 경우를 나누면 피보나치 점화식이 도출된다. 마지막에 세로 타일(1×2) 1개를 놓으면 dp[n-1], 가로 타일(2×1) 2개를 놓으면 dp[n-2]가 되어 **dp[n] = dp[n-1] + dp[n-2]**.
538
+
539
+ **풀이 1 (내 코드)**
540
+
541
+ ```python
542
+ import sys
543
+ read = sys.stdin.readline
544
+
545
+ n = int(read())
546
+ dp = [0] * (1001)
547
+
548
+ dp[1], dp[2] = 1, 2
549
+ for i in range(3, n + 1):
550
+ dp[i] = (dp[i - 1] + dp[i - 2]) % 10007
551
+ print(dp[n])
329
552
  ```
330
553
 
331
- ---
554
+ 핵심 포인트:
555
+ - 배열을 1001 크기로 고정하여 n=1일 때 dp[2] 초기화 시 IndexError 방지
556
+ - 매 단계에서 % 10007 적용하여 중간 값 오버플로우 방지
332
557
 
333
- ## 사용 방법
558
+ **데이터 흐름 추적** (n = 9):
334
559
 
335
- ### 일반 사용 (자연스러운 대화)
336
560
  ```
337
- You: "골드 DP 문제 추천해줘"
338
- Claude가 맥락 파악 → MCP 도구 자동 호출 → 결과 제공
561
+ dp[1] = 1
562
+ dp[2] = 2
563
+ dp[3] = dp[2] + dp[1] = 3
564
+ dp[4] = dp[3] + dp[2] = 5
565
+ dp[5] = dp[4] + dp[3] = 8
566
+ dp[6] = dp[5] + dp[4] = 13
567
+ dp[7] = dp[6] + dp[5] = 21
568
+ dp[8] = dp[7] + dp[6] = 34
569
+ dp[9] = dp[8] + dp[7] = 55 ← 출력
339
570
  ```
340
571
 
341
- ### Skill 사용 (명시적 호출, 권장)
572
+ **풀이 2 (공간 최적화)**
573
+
574
+ ```python
575
+ import sys
576
+ read = sys.stdin.readline
577
+
578
+ n = int(read())
579
+
580
+ if n == 1:
581
+ print(1)
582
+ else:
583
+ a, b = 1, 2
584
+ for _ in range(3, n + 1):
585
+ a, b = b, (a + b) % 10007
586
+ print(b)
342
587
  ```
343
- You: "/algo:search 골드 DP 문제 추천해줘"
344
- Skill이 의도 명확히 파악 정확한 MCP 도구 선택
588
+
589
+ 이전 값만 사용하므로 변수 2개로 O(1) 공간 달성.
590
+
591
+ **자주 하는 실수**
592
+
593
+ - n=1일 때 배열 크기 부족으로 IndexError
594
+ - 모듈러 연산을 마지막에만 적용 → 중간 값 오버플로우 (C++/Java)
595
+ - dp[0] 초기값 설정 혼동 (0 vs 1)
596
+
597
+ **관련 문제**
598
+
599
+ - 11727 — 2×n 타일링 2 (2×2 타일 추가)
600
+ - 1010 — 다리 놓기 (Silver V, 조합 + DP)
601
+ - 9625 — BABBA (Silver V, 피보나치 변형)
602
+ ````
603
+
604
+ </details>
605
+
606
+ ---
607
+
608
+ ## MCP 도구
609
+
610
+ ### 백준 (BOJ)
611
+
612
+ | 도구 | 설명 |
613
+ |------|------|
614
+ | `search_problems_boj` | 문제 검색 (티어, 태그, 키워드) |
615
+ | `get_problem_boj` | 문제 상세 조회 |
616
+ | `search_tags_boj` | 알고리즘 태그 검색 |
617
+ | `fetch_problem_content_boj` | 문제 본문 스크래핑 |
618
+ | `analyze_problem_boj` | 문제 분석 및 힌트 가이드 |
619
+ | `generate_hint_boj` | 3단계 힌트 생성 |
620
+ | `generate_review_template_boj` | 복습 템플릿 생성 |
621
+ | `analyze_code_submission_boj` | 코드 분석 및 피드백 |
622
+
623
+ ### 프로그래머스 (Programmers)
624
+
625
+ | 도구 | 설명 |
626
+ |------|------|
627
+ | `search_problems_programmers` | 문제 검색 (난이도, 카테고리) |
628
+ | `get_problem_programmers` | 문제 상세 조회 |
629
+ | `fetch_problem_content_programmers` | 문제 본문 스크래핑 |
630
+ | `analyze_problem_programmers` | 문제 분석 |
631
+ | `generate_hint_programmers` | 힌트 생성 |
632
+ | `generate_review_template_programmers` | 복습 템플릿 |
633
+ | `analyze_code_submission_programmers` | 코드 분석 |
634
+
635
+
636
+
637
+ ## Q&A
638
+
639
+ <details>
640
+ <summary><b>MCP가 뭔가요?</b></summary>
641
+
642
+ MCP(Model Context Protocol)는 AI 에이전트가 외부 도구를 호출할 수 있게 해주는 표준 프로토콜입니다. AlgoKit은 **로컬 MCP 서버**로 동작합니다. `npx`로 설치하면 사용자의 로컬 머신에서 실행되며, 별도의 원격 서버나 계정이 필요 없습니다.
643
+
345
644
  ```
645
+ 사용자 → AI 에이전트 → AlgoKit MCP 서버 (로컬) → solved.ac API / 웹 스크래핑
646
+
647
+ 자연어 응답 생성
648
+ ```
649
+
650
+ 사용자는 MCP를 직접 다룰 필요 없이, AI에게 자연어로 요청하면 됩니다.
651
+
652
+ </details>
653
+
654
+ <details>
655
+ <summary><b>API 키가 필요한가요?</b></summary>
656
+
657
+ 아니요. AlgoKit은 사용 중인 AI 에이전트(Claude Code, Codex, Gemini 등)를 그대로 활용하는 MCP 서버이므로, 별도의 API 키나 로그인 없이 바로 사용할 수 있습니다.
658
+
659
+ </details>
660
+
661
+ <details>
662
+ <summary><b>어떤 AI 에이전트를 지원하나요?</b></summary>
663
+
664
+ | 에이전트 | 지원 방식 |
665
+ |----------|-----------|
666
+ | **Claude Code** | Plugin Marketplace (자동 설치) |
667
+ | **Codex** | 설치 스크립트 제공 |
668
+ | **Gemini CLI** | 설치 스크립트 제공 |
669
+ | 기타 MCP 호환 에이전트 | 수동 설정 가능 |
670
+
671
+ </details>
672
+
673
+ <details>
674
+ <summary><b>Skill과 MCP 도구의 차이가 뭔가요?</b></summary>
675
+
676
+ - **MCP 도구**: AlgoKit 서버가 제공하는 개별 기능 단위 (예: `search_problems_boj`, `analyze_problem_boj`)
677
+ - **Skill** (`/algo:*`): 여러 MCP 도구를 조합해 하나의 워크플로우로 묶은 것 (예: `/algo:hint`는 내부적으로 `analyze_problem` + `fetch_problem_content`를 조합)
346
678
 
347
- **차이점**: MCP 도구를 호출하지만, Skill 사용 명시적이고 정확한 응답을 받을 있습니다.
679
+ Skill을 사용하면 AI가 최적의 도구를 자동으로 선택하고 조합합니다. 자연어로 질문해도 동일한 결과를 얻을있지만, Skill을 명시하면 의도가 더 정확하게 전달됩니다.
680
+
681
+ </details>
682
+
683
+ <details>
684
+ <summary><b>프로그래머스도 지원하나요?</b></summary>
685
+
686
+ 네. 프로그래머스도 지원합니다.
687
+
688
+ </details>
689
+
690
+ <details>
691
+ <summary><b>오프라인에서도 사용할 수 있나요?</b></summary>
692
+
693
+ 아니요. AlgoKit은 solved.ac API와 BOJ/프로그래머스 웹사이트에서 실시간으로 데이터를 가져오므로 인터넷 연결이 필요합니다.
694
+
695
+ </details>
696
+
697
+ <details>
698
+ <summary><b>ChatGPT나 Claude에 직접 물어보는 것과 뭐가 다른가요?</b></summary>
699
+
700
+ AI에게 직접 알고리즘 문제를 질문하면 학습 데이터에 의존하기 때문에, 문제 정보가 부정확하거나 존재하지 않는 문제를 지어내는 경우가 있습니다. 웹 검색을 사용하더라도 공식 출처가 아닌 블로그 등에서 데이터를 가져오는 경우가 많아 정확도가 보장되지 않습니다.
701
+
702
+ AlgoKit은 **공식 데이터 소스**(solved.ac API, BOJ/프로그래머스 웹사이트)에서 직접 실시간 데이터를 가져와 AI에게 전달하므로, 항상 정확한 문제 정보를 기반으로 응답합니다.
703
+
704
+ | | AI에 직접 질문 | AlgoKit 사용 |
705
+ |---|---|---|
706
+ | 데이터 소스 | 학습 데이터 또는 블로그 등 비공식 출처 | solved.ac API, BOJ/프로그래머스 공식 사이트 |
707
+ | 문제 정보 | 부정확하거나 존재하지 않는 문제 생성 가능 | 실시간 크롤링 (항상 최신, 정확) |
708
+ | 난이도/태그 | 부정확하거나 누락 | solved.ac 기준 정확한 데이터 |
709
+ | 힌트 제공 | 한 번에 전체 풀이 노출 위험 | Level 1→2→3 단계별 제공 |
710
+ | 복습 지원 | 매번 수동 요청 | 구조화된 복습 문서 자동 생성 |
711
+ | 학습 워크플로우 | 없음 | 검색→힌트→빈칸→리뷰→복습 일관된 흐름 |
712
+
713
+ </details>
714
+
715
+ ---
348
716
 
349
717
  ## 개발
350
718