문제 기여하기
이 프로젝트는 오픈소스입니다. 누구나 GitHub로 새 문제를 제안하거나 기존 문제를 개선할 수 있습니다.
- 문제 설명·채점 데이터·실행 답안과 제작 명세를 준비한다
- GitHub 저장소를 Fork 해서 파일을 추가한다
- Pull Request를 제출하면 리뷰 후 자동 배포된다
문제 파일 구조 · v2
설명, 채점 데이터, 실제로 실행되는 시작 프로젝트와 모범답안을 함께 작성합니다. 기존 번호는 유지하고 학습 순서는 별도로 지정합니다.
problems/NNN/
├── meta.json
├── description.md
├── tests.json
├── solution.txt # 제작용 소스
├── solution.spec.json # 블록 생성 명세
├── starter_001.ent # 시작 프로젝트
└── solution_001.ent # 실행 가능한 모범답안
1. 난이도와 메타데이터
별 0개는 첫 시작, 1개는 입력과 계산, 2개는 조건과 반복, 3개는 리스트와 문자열, 4개는 여러 단계의 문제 해결, 5개는 알고리즘 전략, PRO는 심화입니다. difficulty는 0~6이며 6이 PRO입니다.
schemaVersion: 2, 개정 번호, 학습 순서 order, 개념 concepts, 선행 문제 prerequisites와 작성자를 기록합니다. 시작·답안 파일의 채택 번호와 해시는 제작 도구로 생성합니다.
2. 문제 설명
- 무엇을 구할지 한두 문장으로 설명합니다.
- 입력 이름, 범위, 빈 값·중복·정렬·허용 문자를 정합니다.
- 말하기 순서와 횟수 또는 최종 리스트 상태를 명시합니다.
- 입력과 전체 출력, 그 결과가 나오는 이유를 적습니다.
- 단계별 힌트와 경계값을 설명합니다. 엔트리 리스트는 1번째부터 시작합니다.
3. 채점 데이터
test는 공개 검사, submit은 제출 검사입니다. 제출 사례 이름과 상세 결과는 화면에서 숨기지만 정적 파일 자체는 공개됩니다. 파일과 각 사례에 schemaVersion: 2를 넣고 고유 ID와 비교 자료형을 명시합니다.
{
"schemaVersion": 2,
"id": "test-001",
"name": "3과 5의 합",
"setup": {"variables": {"변수1": 3, "변수2": 5}},
"expected": {"say": ["8"]},
"comparison": {"say": {"type": "number"}},
"timeout": 15000
}
위 사례를 test 배열에 넣고 별도의 ID로 제출 사례를 작성합니다. say는 부분 일치가 아닌 순서·횟수까지 정확하게 검사합니다. text는 공백과 선행 0을 보존하고, number는 같은 수인지 비교합니다. 리스트는 길이·순서·중복을 검사합니다.
묻고 기다리기는 setup.variables.대답으로 한 번 자동 응답합니다. 다른 변수·리스트는 프로젝트에 실제로 있어야 합니다. 정답은 모범답안과 별개의 계산 방법으로 확인하고 빈 값, 중복, 음수, 경계값을 추가하세요.
4. 시작 프로젝트와 모범답안
모범답안은 실제 엔트리 블록으로 작성하며 모든 공개·제출 사례를 통과해야 합니다. 파일은 _001, _002처럼 번호를 늘려 보관하고 meta.json에서 사용할 파일을 선택합니다. 완성 예제를 제외한 시작 프로젝트에는 정답을 넣지 않습니다.
현재 solution.txt는 블록 제작용 제한 Python 문법이며 엔트리 Python 편집기에 그대로 붙이는 파일이 아닙니다. 생성한 답안은 사이트의 모범답안 보기에서 실제 실행·복원까지 확인합니다. Python 모드도 실제 변환과 채점으로 별도 확인하세요.
제작 명령, v2 전체 예제, 검증 도구는 상세 출제 가이드를 참고하세요.
GitHub로 기여하기
-
Fork
GitHub 저장소에 접속 → 우상단 Fork 버튼 → 본인 계정으로 복사.
-
로컬에 클론 + 새 브랜치
git clone https://github.com/<본인>/CODE-205.git cd CODE-205 git checkout -b add-problem-017 -
문제 폴더 추가
예:
problems/017/폴더를 만들고meta.json,tests.json,description.md를 작성. -
정적 사이트 빌드 후 실제 동작 확인
npm ci npm run build:pages npm run preview:pages브라우저에서
http://127.0.0.1:4173을 열어 목록에 새 문제가 보이는지, 블록을 조립해서 테스트하기·제출하기가 통과하는지 확인. -
단위 테스트 실행
npm test기존 회귀 테스트와 정적 빌드 무결성 테스트가 모두 통과해야 합니다.
-
커밋 + 푸시
git add problems/017 git commit -m "문제 017 추가: 홀짝 판별" git push origin add-problem-017 -
Pull Request 제출
GitHub에서 본인 Fork 저장소로 이동하면 상단에 Compare & pull request 배너가 나타납니다. 클릭 → 제목과 설명 작성 → Create pull request.
설명에는 다음을 포함해주세요:
- 문제 개요와 난이도 근거
- 테스트 케이스 개수와 커버하는 케이스 종류
- 로컬에서
npm test통과 스크린샷(선택)
-
리뷰 → 머지 → 자동 배포
유지보수자가 리뷰 후 머지하면 GitHub Actions가 테스트와 정적 빌드를 실행한 뒤 GitHub Pages에 배포합니다.
이메일로 기여하기
GitHub 사용이 어려우시면 이메일로 보내주셔도 됩니다. 유지보수자가 대신 저장소에 반영합니다.
- 문제 번호에 해당하는 폴더 하나를 만듭니다. 예:
017/ - 폴더 안에 위에서 설명한 파일들을 넣습니다.
017/ ├── meta.json ├── description.md ├── tests.json ├── starter_001.ent ├── solution_001.ent ├── solution.spec.json └── solution.txt - 폴더 전체를
.zip으로 압축합니다 (폴더 우클릭 → 보내기 → 압축 폴더). - 압축 파일을 205@205.kr로 첨부해서 보내주세요.
메일 본문에 포함해주시면 좋은 정보
- 문제 제목과 난이도
- 기여자 닉네임(카드에 표시될 이름)
- 참고하거나 수정한 기존 문제가 있으면 번호
도움말 · 관련 자료
- PROBLEM_GUIDE.md — 난이도 기준, 스프라이트 목록, 케이스 디자인 등 상세 가이드
- README.md — 프로젝트 전반 소개
- GitHub Issues — 버그 제보, 질문, 제안
- 205sla/CODE-205 — 저장소 메인