← 메인 CODE 205 BETA

문제 기여하기

이 프로젝트는 오픈소스입니다. 누구나 GitHub로 새 문제를 제안하거나 기존 문제를 개선할 수 있습니다.

전체 흐름 요약
  1. 문제 폴더에 들어갈 파일 4개를 작성한다
  2. GitHub 저장소를 Fork 해서 파일을 추가한다
  3. Pull Request를 제출하면 리뷰 후 자동 배포된다

문제 파일 구조

각 문제는 problems/NNN/ 폴더 안에 최대 5개 파일로 구성됩니다. NNN001부터 시작하는 3자리 일련번호(0 패딩).

problems/
└── 017/
    ├── meta.json          # (필수) 제목, 난이도, 작성자
    ├── description.md     # (필수) 문제 설명 Markdown
    ├── tests.json         # (필수) 테스트·채점 케이스
    ├── project.ent        # (선택) 기본 프로젝트 파일
    └── solution.txt       # (권장) 모범답안 — 엔트리 파이썬 코드

1. meta.json 필수

문제의 메타데이터. 목록 화면의 카드 표시에 사용됩니다.

필드타입설명
titlestring문제 제목 (필수)
difficulty0–5별 난이도 (미지정 시 0)
authorstring출제자 닉네임
contributorsstring[]수정자 닉네임 배열
spritesstring[]허용 스프라이트 ID. 생략 시 전체 노출, []면 추가 차단
{
  "title": "홀짝 판별",
  "difficulty": 2,
  "author": "내닉네임"
}

2. description.md 필수

좌측 문제 설명 패널에 Markdown으로 렌더링됩니다. 아래 4개 섹션을 동일한 순서로 작성해주세요.

## 문제
양의 정수를 입력받아 홀수면 "홀", 짝수면 "짝"이라고 말하는 프로그램.

## 입력
묻고 기다리기로 숫자 하나 입력.

## 출력
"홀" 또는 "짝".

## 예시
- 입력: 7 → 출력: 홀
- 입력: 4 → 출력: 짝

## 힌트
나머지 연산(`mod`)을 활용하세요.

3. tests.json 필수

자동 채점 케이스. test 배열(공개)과 submit 배열(숨김) 두 종류.

{
  "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 선택

엔트리 에디터에서 내보낸 기본 프로젝트 파일. 학습자가 시작할 상태(변수 선언, 리스트, 기본 블록 배치 등)를 정의합니다.

5. solution.txt 권장

문제를 실제로 풀었을 때의 모범답안을 엔트리 파이썬 모드 코드로 변환한 텍스트 파일. 리뷰어가 의도한 풀이를 따라가며 tests.json의 기대값이 실제로 나오는지 검증하는 용도입니다.

생성 방법:

  1. 엔트리 에디터에서 블록으로 문제를 푼다
  2. 상단 파이썬 모드 버튼 클릭 → 코드가 파이썬으로 변환됨
  3. 코드 영역 전체를 복사해서 problems/NNN/solution.txt에 저장

예시 (solution.txt):

answer = int(input())
if answer % 2 == 0:
    Entry.print("짝")
else:
    Entry.print("홀")

참고: 이 파일은 웹 서비스에서 사용되지 않습니다. 기여 리뷰와 문제 검증 참고용으로만 저장소에 포함됩니다.

GitHub로 기여하기

  1. Fork

    GitHub 저장소에 접속 → 우상단 Fork 버튼 → 본인 계정으로 복사.

  2. 로컬에 클론 + 새 브랜치
    git clone https://github.com/<본인>/CODE-205.git
    cd CODE-205
    git checkout -b add-problem-017
  3. 문제 폴더 추가

    예: problems/017/ 폴더를 만들고 meta.json, tests.json, description.md를 작성.

  4. 로컬에서 실제 동작 확인
    npm install
    npm start

    브라우저에서 http://localhost:3000을 열어 목록에 새 문제가 보이는지, 블록을 조립해서 테스트하기·제출하기가 통과하는지 확인.

  5. 단위 테스트 실행
    npm test

    기존 57개 테스트가 모두 통과해야 합니다. 채점 엔진을 건드리지 않았다면 자연스럽게 통과.

  6. 커밋 + 푸시
    git add problems/017
    git commit -m "문제 017 추가: 홀짝 판별"
    git push origin add-problem-017
  7. Pull Request 제출

    GitHub에서 본인 Fork 저장소로 이동하면 상단에 Compare & pull request 배너가 나타납니다. 클릭 → 제목과 설명 작성 → Create pull request.

    설명에는 다음을 포함해주세요:

    • 문제 개요와 난이도 근거
    • 테스트 케이스 개수와 커버하는 케이스 종류
    • 로컬에서 npm test 통과 스크린샷(선택)
  8. 리뷰 → 머지 → 자동 배포

    유지보수자가 리뷰 후 머지합니다. 머지되는 순간 GitHub Actions가 자동으로 테스트를 돌리고 code.205.kr에 반영됩니다. 약 20초 후 실서비스에서 확인 가능.

이메일로 기여하기

GitHub 사용이 어려우시면 이메일로 보내주셔도 됩니다. 유지보수자가 대신 저장소에 반영합니다.

  1. 문제 번호에 해당하는 폴더 하나를 만듭니다. 예: 017/
  2. 폴더 안에 위에서 설명한 파일들을 넣습니다.
    017/
    ├── meta.json
    ├── description.md
    ├── tests.json
    ├── project.ent       (선택)
    └── solution.txt      (권장)
  3. 폴더 전체를 .zip으로 압축합니다 (폴더 우클릭 → 보내기 → 압축 폴더).
  4. 압축 파일을 205@205.kr로 첨부해서 보내주세요.

메일 본문에 포함해주시면 좋은 정보

도움말 · 관련 자료