-
Notifications
You must be signed in to change notification settings - Fork 0
시간/공간 복잡도 자동 분석 #8
Copy link
Copy link
Open
Description
목표
DaleStudy 알고리즘 PR에 각 솔루션 파일의 시간/공간 복잡도를 자동 분석하여 댓글로 제공한다.
요구사항
R1. 복잡도 자동 계산
- 트리거: PR
opened/reopened/synchronize - 대상: 솔루션 파일 (기존
SOLUTION_PATH_REGEX재사용) - 출력: 파일별 review comment (
subject_type: "file")- 시간복잡도 (Big-O)
- 공간복잡도 (Big-O)
- 1-2줄 근거
R2. 기존 주석 검증
- 주석 포맷: 자유 포맷 허용 (언어별 주석 스타일 자동 인식)
- 예시:
// TC: O(n),# 시간복잡도: O(n log n),/* Space: O(1) */등 - 정해진 포맷 없이 유연하게 파싱
- 예시:
- 주석이 있는 경우:
- 유저 분석값과 실제 계산값을 테이블로 비교
- 일치 시 ✅, 불일치 시 ❌ 표시
- 불일치 시 다시 풀어보는 것을 권장하는 톤으로 피드백
- 주석이 없는 경우: R1만 실행 (계산값만 제공) + 주석 작성 권장 안내
R3. 개선 제안
- 의미 있는 개선 여지(최소 한 단계 이상, 예: O(n²) → O(n))만 제안
- 문제 제약조건을 모를 수 있으므로 "고려해볼 만한 대안" 톤 유지
- 현재 구현이 적절하면 "현재 구현이 적절해 보입니다" 명시
댓글 본문 포맷 (Output Format)
R1/R2/R3을 하나의 댓글에 통합하여 아래 포맷으로 작성한다.
케이스 1: 유저 주석 있음 + 일치
<!-- dalestudy-complexity-analysis -->
### 📊 시간/공간 복잡도 분석
| | 유저 분석 | 실제 분석 | 결과 |
|---|---|---|---|
| **Time** | O(n) | O(n) | ✅ |
| **Space** | O(1) | O(1) | ✅ |
**피드백**: 정확합니다! 배열을 한 번 순회(O(n))하며 상수 공간만 사용하는 최적의 풀이입니다.케이스 2: 유저 주석 있음 + 불일치
<!-- dalestudy-complexity-analysis -->
### 📊 시간/공간 복잡도 분석
| | 유저 분석 | 실제 분석 | 결과 |
|---|---|---|---|
| **Time** | O(n) | O(n log n) | ❌ |
| **Space** | O(1) | O(n) | ❌ |
**피드백**: sort()를 사용하고 있어 시간 복잡도는 O(n log n)이며, 정렬 과정에서 O(n) 추가 공간이 필요합니다. 한번 다시 분석해보시는 것을 권장드립니다!케이스 3: 유저 주석 없음 (복잡도 분석만 제공)
<!-- dalestudy-complexity-analysis -->
### 📊 시간/공간 복잡도 분석
| | 복잡도 |
|---|---|
| **Time** | O(n) |
| **Space** | O(1) |
**피드백**: 배열을 한 번 순회하며 최솟값과 최대 이익을 갱신하는 방식입니다.
> 💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!비기능 요구사항
- Cloudflare Workers 환경 (Node.js 모듈 불가, Web 표준 API만)
- 기존 OpenAI 유틸/패턴 재사용 (
gpt-4.1-nano) - 중복 댓글 방지 (HTML 마커:
<!-- dalestudy-complexity-analysis -->) - 기존 패턴 태깅과 병렬 실행 (
Promise.allSettled) - Non-blocking: 실패 시 전체 웹훅 처리 중단하지 않음
결정 완료
- 주석 포맷 표준: 자유 포맷 허용. 정해진 규칙 없이 유연하게 파싱
- R3 포함 여부: R1+R2+R3 모두 MVP에 포함
- 댓글 구조: R1/R2/R3을 한 댓글에 통합 (위 Output Format 참조)
- 불일치 시 톤 강도: 다시 풀어보는 것을 권장하는 톤
- 주석 파싱 실패 처리: 자유 포맷이므로 유연하게 대처. 파싱 불가 시 주석 없음으로 간주하여 분석값만 제공
참고
- 상세 리서치는 댓글의
Research.md참조 - 가장 유사한 기존 구현:
handlers/tag-patterns.js
Reactions are currently unavailable