문제 기여하기
이 프로젝트는 오픈소스입니다. 누구나 GitHub로 새 문제를 제안하거나 기존 문제를 개선할 수 있습니다.
- 문제 폴더에 들어갈 파일 4개를 작성한다
- GitHub 저장소를 Fork 해서 파일을 추가한다
- Pull Request를 제출하면 리뷰 후 자동 배포된다
문제 파일 구조
각 문제는 problems/NNN/ 폴더 안에 최대 5개 파일로 구성됩니다. NNN은 001부터 시작하는 3자리 일련번호(0 패딩).
problems/
└── 017/
├── meta.json # (필수) 제목, 난이도, 작성자
├── description.md # (필수) 문제 설명 Markdown
├── tests.json # (필수) 테스트·채점 케이스
├── project.ent # (선택) 기본 프로젝트 파일
└── solution.txt # (권장) 모범답안 — 엔트리 파이썬 코드
1. meta.json 필수
문제의 메타데이터. 목록 화면의 카드 표시에 사용됩니다.
| 필드 | 타입 | 설명 |
|---|---|---|
title | string | 문제 제목 (필수) |
difficulty | 0–5 | 별 난이도 (미지정 시 0) |
author | string | 출제자 닉네임 |
contributors | string[] | 수정자 닉네임 배열 |
sprites | string[] | 허용 스프라이트 ID. 생략 시 전체 노출, []면 추가 차단 |
{
"title": "홀짝 판별",
"difficulty": 2,
"author": "내닉네임"
}
2. description.md 필수
좌측 문제 설명 패널에 Markdown으로 렌더링됩니다. 아래 4개 섹션을 동일한 순서로 작성해주세요.
## 문제
양의 정수를 입력받아 홀수면 "홀", 짝수면 "짝"이라고 말하는 프로그램.
## 입력
묻고 기다리기로 숫자 하나 입력.
## 출력
"홀" 또는 "짝".
## 예시
- 입력: 7 → 출력: 홀
- 입력: 4 → 출력: 짝
## 힌트
나머지 연산(`mod`)을 활용하세요.
3. tests.json 필수
자동 채점 케이스. test 배열(공개)과 submit 배열(숨김) 두 종류.
- test: "테스트하기" 버튼으로 실행. 케이스 이름과 실패 상세가 공개됩니다.
- submit: "제출하기" 버튼으로 실행. 이름은
테스트 N으로 가려지고 diff 상세는 비공개.
{
"test": [
{
"name": "홀수",
"setup": { "variables": { "대답": "7" } },
"expected": { "say": ["홀"] }
},
{
"name": "짝수",
"setup": { "variables": { "대답": "4" } },
"expected": { "say": ["짝"] }
}
],
"submit": [
{ /* 경계값, 큰 수, 0 등 다양하게 */ }
]
}
케이스 필드
| 필드 | 설명 |
|---|---|
name | 공개 이름 (submit에서는 숨김) |
setup.variables | 실행 전 변수 값. 키 "대답"은 묻고 기다리기 자동 입력값. |
setup.lists | 실행 전 리스트 값 ({"이름": [1, 2, 3]}) |
expected.say | 말하기 출력 문자열 배열. 부분 일치로 체크. |
expected.variables | 실행 후 변수 최종값 |
expected.lists | 실행 후 리스트 최종값 |
timeout | 이 케이스의 타임아웃 ms (미지정 시 5000) |
4. project.ent 선택
엔트리 에디터에서 내보낸 기본 프로젝트 파일. 학습자가 시작할 상태(변수 선언, 리스트, 기본 블록 배치 등)를 정의합니다.
- 엔트리 에디터에서 초기 상태 구성 → 파일 → 오프라인 작품 저장 →
.ent파일 획득 - 생성한 파일을
problems/NNN/project.ent로 배치 - 생략 시 학습자는 빈 프로젝트에서 시작
5. solution.txt 권장
문제를 실제로 풀었을 때의 모범답안을 엔트리 파이썬 모드 코드로 변환한 텍스트 파일. 리뷰어가 의도한 풀이를 따라가며 tests.json의 기대값이 실제로 나오는지 검증하는 용도입니다.
생성 방법:
- 엔트리 에디터에서 블록으로 문제를 푼다
- 상단 파이썬 모드 버튼 클릭 → 코드가 파이썬으로 변환됨
- 코드 영역 전체를 복사해서
problems/NNN/solution.txt에 저장
예시 (solution.txt):
answer = int(input())
if answer % 2 == 0:
Entry.print("짝")
else:
Entry.print("홀")
참고: 이 파일은 웹 서비스에서 사용되지 않습니다. 기여 리뷰와 문제 검증 참고용으로만 저장소에 포함됩니다.
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 install npm start브라우저에서
http://localhost:3000을 열어 목록에 새 문제가 보이는지, 블록을 조립해서 테스트하기·제출하기가 통과하는지 확인. -
단위 테스트 실행
npm test기존 57개 테스트가 모두 통과해야 합니다. 채점 엔진을 건드리지 않았다면 자연스럽게 통과.
-
커밋 + 푸시
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가 자동으로 테스트를 돌리고
code.205.kr에 반영됩니다. 약 20초 후 실서비스에서 확인 가능.
이메일로 기여하기
GitHub 사용이 어려우시면 이메일로 보내주셔도 됩니다. 유지보수자가 대신 저장소에 반영합니다.
- 문제 번호에 해당하는 폴더 하나를 만듭니다. 예:
017/ - 폴더 안에 위에서 설명한 파일들을 넣습니다.
017/ ├── meta.json ├── description.md ├── tests.json ├── project.ent (선택) └── solution.txt (권장) - 폴더 전체를
.zip으로 압축합니다 (폴더 우클릭 → 보내기 → 압축 폴더). - 압축 파일을 205@205.kr로 첨부해서 보내주세요.
메일 본문에 포함해주시면 좋은 정보
- 문제 제목과 난이도
- 기여자 닉네임(카드에 표시될 이름)
- 참고하거나 수정한 기존 문제가 있으면 번호
도움말 · 관련 자료
- PROBLEM_GUIDE.md — 난이도 기준, 스프라이트 목록, 케이스 디자인 등 상세 가이드
- README.md — 프로젝트 전반 소개
- GitHub Issues — 버그 제보, 질문, 제안
- 205sla/CODE-205 — 저장소 메인