boj-fetch
백준 문제 페이지를 가져와서 풀이용 빈 파일과 가이드라인 문서를 생성합니다.
Triggers
- •
/boj-fetch <category> <url> - •"백준 문제 가져와"
Usage
code
/boj-fetch math1 https://www.acmicpc.net/problem/2745
Arguments
- •
category: 문제 카테고리 디렉토리 (예: math1, dp, greedy) - •
url: 백준 문제 URL
Workflow
Step 1: Parse Arguments
스킬 인자에서 카테고리와 URL 추출:
- •인자 파싱:
- •인자가 없으면 AskUserQuestion으로 입력 요청
- •인자가 부족하면 누락된 것만 요청
- •URL에서 문제 번호 추출 (예:
/problem/2745→2745)
Step 2: Fetch from solved.ac API
solved.ac API에서 문제 정보 가져오기:
API 호출:
code
WebFetch: https://solved.ac/api/v3/problem/show?problemId={문제번호}
가져올 정보:
- •
titleKo: 문제 제목 (한글) - •
level: 난이도 (0-30)
난이도 변환 로직:
code
0: Unrated → (난이도 표기 생략) 1-5: Bronze 5-1 → b5, b4, b3, b2, b1 6-10: Silver 5-1 → s5, s4, s3, s2, s1 11-15: Gold 5-1 → g5, g4, g3, g2, g1 16-20: Platinum 5-1 → p5, p4, p3, p2, p1 21-25: Diamond 5-1 → d5, d4, d3, d2, d1 26-30: Ruby 5-1 → r5, r4, r3, r2, r1
변환 예시:
- •level 1 → b5 (Bronze 5)
- •level 5 → b1 (Bronze 1)
- •level 6 → s5 (Silver 5)
- •level 10 → s1 (Silver 1)
- •level 11 → g5 (Gold 5)
Step 3: Create Directory
디렉토리 생성 (없는 경우):
code
[category]/
Step 4: Create Solution File
빈 솔루션 파일 생성:
파일명 형식:
- •난이도 있을 때:
bj_{문제번호}_{난이도}.py - •난이도 없을 때 (Unrated):
bj_{문제번호}.py
예시:
- •
math1/bj_11005_b1.py(Bronze 1) - •
math1/bj_1000_b5.py(Bronze 5)
중요: 파일은 반드시 빈 파일로 생성. 사용자가 직접 풀어야 함.
Step 5: AskUserQuestion으로 문제 내용 입력받기
백준 사이트 403 차단으로 인해 사용자에게 직접 문제 내용 입력 요청:
AskUserQuestion 사용 - 한 번에 3개 질문:
- •문제 설명: "백준 사이트에서 '문제' 섹션의 내용을 붙여넣어 주세요"
- •입력 형식: "백준 사이트에서 '입력' 섹션의 내용을 붙여넣어 주세요"
- •출력 형식: "백준 사이트에서 '출력' 섹션의 내용을 붙여넣어 주세요"
참고: 예제 입력/출력은 생략 (가이드 문서에서 제외)
Step 6: Create Guide Document
같은 디렉토리에 마크다운 가이드 문서 생성:
파일명 형식:
- •난이도 있을 때:
bj_{문제번호}_{제목}_{난이도}.md - •난이도 없을 때:
bj_{문제번호}_{제목}.md
예시:
- •
math1/bj_11005_진법_변환_2_b1.md - •
math1/bj_1000_A+B_b5.md
파일명의 제목은 한글/영문 그대로 사용 (공백은 언더스코어로 대체).
문서 구조:
markdown
# [문제번호] [제목] ## 문제 정보 | 항목 | 내용 | |------|------| | 문제 링크 | [백준 [번호]](URL) | | 난이도 | [solved.ac에서 가져온 난이도, 예: Bronze 1] | ## 문제 설명 [Step 5에서 사용자가 입력한 문제 설명] ## 입력 [Step 5에서 사용자가 입력한 입력 형식] ## 출력 [Step 5에서 사용자가 입력한 출력 형식] --- ## PS 가이드라인 ### 알고리즘 분류 이 문제에서 활용할 수 있는 알고리즘/자료구조: - [관련 알고리즘 카테고리 1-3개 제시] - (정답을 직접 알려주지 않되, 방향성 제시) ### 접근법 힌트 스스로 풀이를 구상할 수 있도록 단계별 사고 유도: 1. **입력 분석**: [입력의 특성과 범위를 어떻게 해석해야 하는가?] 2. **핵심 질문**: [이 문제를 풀기 위해 스스로에게 던져야 할 질문] 3. **패턴 인식**: [유사한 유형의 문제에서 자주 쓰이는 접근법 암시] ### 엣지 케이스 체크리스트 구현 시 반드시 확인해야 할 경계 조건: - [ ] [입력 범위의 최솟값/최댓값 처리] - [ ] [특수 케이스 - 0, 1, 빈 값 등] - [ ] [오버플로우 가능성] - [ ] [시간복잡도 제약 확인] ### 생각해볼 점 문제 해결 과정에서 스스로 답해보면 좋은 질문들: - [핵심 아이디어를 찾기 위한 유도 질문 1] - [효율적인 구현을 위한 유도 질문 2] - [예제를 분석하며 패턴을 찾는 질문 3] --- ## 구현 가이드라인 [문제 특성에 맞게 입력/로직/출력 섹션을 작성. 생소한 문법만 설명.] ### # 입력 ```python [문제에 맞는 입력 코드]
→ 생소한문법: 한 줄 설명 (필요시만)
# 로직
python
[핵심 로직에 필요한 문법 예시]
→ 생소한문법: 한 줄 설명 (필요시만)
# 출력
python
[문제에 맞는 출력 코드]
→ 생소한문법: 한 줄 설명 (필요시만)
code
**기본 문법 (설명 생략):** - 입출력: `print`, `input`, `int()`, `str()` - 연산: `+`, `-`, `*`, `/`, `%`, `//` - 제어문: `for`, `while`, `if` - 리스트 기본: `len()`, `range()`, `append()`, `pop()` **생소한 문법 (설명 필요):** - `map()`, `zip()`, `enumerate()` - `ord()`, `chr()` - 슬라이싱 트릭: `[::-1]` - `''.join()`, `split()` 특수 용법 - `sys.stdin.readline` - `collections`, `itertools` 등 모듈 **가이드라인 작성 원칙:** - 정답 코드나 핵심 알고리즘을 직접 알려주지 않음 - 사용자가 스스로 생각할 수 있도록 질문 형태로 유도 - 방향성과 힌트는 제공하되, 최종 답은 스스로 찾게 함 - 엣지 케이스는 구체적으로 명시하여 디버깅 시간 절약 ### Step 7: Confirm Creation 생성 결과 출력: - 생성된 파일 목록 - `[category]/bj_[number]_[난이도].py` (빈 솔루션 파일) - `[category]/bj_[number]_[제목]_[난이도].md` (가이드 문서) - 문제 제목 - 난이도 - 간단한 문제 요약 ## Notes - 솔루션 코드는 절대 작성하지 않음 - 카테고리는 기존 디렉토리 사용 권장, 없으면 새로 생성 - 가이드라인은 힌트 수준으로만 작성, 정답 제공 금지 - solved.ac API 호출 실패 시 난이도 없이 진행