---
name: cote-summary
description: 코딩테스트 문제 풀이 후 발생한 이슈/원인/해결/배운 문법을 LV별 회고 마크다운에 누적 추가. 사용법 /cote-summary [문제파일명]
---

# 코딩테스트 문제 정리

코테 문제를 푼 뒤, **그 문제에서 어떤 이슈를 만났고 어떻게 해결했는지**를 같은 템플릿으로 LV별 회고 마크다운에 누적 정리한다. 새 문제를 풀 때마다 같은 형식으로 추가하기 위한 스킬.

## 문서 구조 (3개 분리)

```
coding-test/
├── 파이썬_문법_레퍼런스.md     ← 공용 문법 사전 (직접 수정 X, 필요 시만)
├── 코테_공부_가이드.md          ← 공용 학습 가이드 (직접 수정 X, 필요 시만)
└── programmers/
    ├── LV0/
    │   ├── 두수나눗셈.py
    │   ├── ...
    │   └── 문제별_회고.md       ← 이 스킬이 추가하는 대상
    ├── LV1/
    │   └── 문제별_회고.md
    └── LV2/
```

이 스킬은 **각 LV의 `문제별_회고.md`** 만 다룸. 공용 문서 두 개는 사용자가 명시적으로 갱신을 요청할 때만 손대기.

## 동작 절차

### 1. 대상 파일 파악
- `$ARGUMENTS`로 문제 파일명을 받음 (예: `짝수의합.py`)
- 인자가 없으면 **가장 최근 대화 맥락**에서 다뤄진 문제 파일을 사용
- 파일이 속한 LV 디렉토리 식별 (예: `programmers/LV0/`)

### 2. 회고 파일 결정
- 같은 LV 디렉토리의 `문제별_회고.md`에 추가
- 없으면 새로 생성 — 헤더(`# LV{N} 문제별 회고`), 함께 보는 문서 안내, 빈 "## 이 LV에서 다룬 문법 인덱스" 표를 함께 만들기

### 3. 이슈 분석 (필수 정보)
다음을 대화 맥락 + 문제 코드에서 추출:
- **문제 요약**: 한두 줄 (입력/출력/요구사항)
- **처음 시도한 코드**: 사용자가 원래 짠 풀이
- **발생한 이슈**: 에러 메시지 또는 오답 케이스 (가능하면 실제 출력 인용)
- **원인**: 왜 그랬는지 — 파이썬 동작 원리 차원에서
- **해결 방법**: 수정된 코드 (가능하면 1) 직관적 풀이 2) 한 줄/파이썬다운 풀이 둘 다)
- **핵심 문법 / 배운 점**: 다음 문제에서도 써먹을 일반 규칙

### 4. 문법 인덱스 갱신
- 파일 상단 "## 이 LV에서 다룬 문법 인덱스" 표 갱신
- 이미 있는 항목이면 "등장 문제" 칸에 이번 문제명 추가 (콤마 구분)
- 새 항목이면 행 추가

### 5. 문제 섹션 추가
다음 템플릿을 그대로 사용. 번호는 기존 섹션 다음 번호.

````markdown
## {번호}. {문제파일명} — {짧은 주제}

**문제 요약**
- 한두 줄 요약

**처음 시도한 코드**
```python
...
```

**발생한 이슈**
- 에러 메시지 또는 오답 케이스

**원인**
- 왜 그런 일이 일어났는지 (파이썬 동작 원리 관점)

**해결 방법**
```python
...
```

**핵심 문법 / 배운 점**
- 일반화된 규칙 / 다음 문제에서도 쓸 수 있는 형태로
````

### 6. 사용자에게 한 줄 보고
어떤 문제를 어떤 키워드로 정리했는지, 인덱스에 어떤 항목이 추가/갱신되었는지 한 줄로 요약 보고.

## 공용 문서 갱신 규칙

다음 경우에만 공용 문서를 갱신:

- **`파이썬_문법_레퍼런스.md`**: 이번 문제에서 등장한 함수/도구가 레퍼런스에 **누락**되어 있고, 자주 쓰일 만하다고 판단될 때 → 적절한 카테고리에 추가
- **`코테_공부_가이드.md`**: 일반화 가능한 새로운 함정/사고 패턴이 발견됐을 때 → 체크리스트나 "사고 패턴" 섹션에 추가

공용 문서 변경 시 사용자에게 "공용 문서 X에도 Y 항목 추가했다"고 보고.

## 작성 규칙

- **언어**: 한국어 (사용자 선호)
- **톤**: 코테 처음 시작하는 학생에게 친절히 설명하듯, 단 간결하게
- **코드 블록**: 파이썬은 ` ```python ` 사용
- **표**: 비교가 필요할 때 적극 활용
- **신규 추가만**: 기존 문제 섹션은 건드리지 말 것 — 단, 인덱스 표는 갱신

## 무엇이 좋은 정리인가

- "왜 이게 안 됐는지"를 **파이썬 동작 원리**로 설명 (예: in-place 메서드는 None 반환, 문자열은 immutable이라 +=가 O(n²) 등)
- 우연히 답이 맞은 케이스가 있다면 그것도 짚어주기 (banker's rounding처럼 샘플은 통과되지만 채점 시 실패하는 패턴)
- 실전 풀이와 원리 이해용 풀이를 **둘 다** 보여주기
- 같은 문법이 이전 문제에 나왔다면 인덱스로 연결되도록 표기

## 무엇이 나쁜 정리인가

- 문제 코드만 복붙해두고 "이렇게 풀면 됨" 식의 결론
- 단순 해결만 적고 원인/원리는 누락
- "round()는 반올림" 같은 공식 정의만 적고 **함정**(banker's rounding)을 빠뜨림
- 너무 길어서 복습 시 다시 안 읽게 되는 분량
