문제 만들기 가이드

만드는 순서

Studio의 새 문제에서 다섯 단계를 채우고 검토를 요청합니다. 관리자가 승인하면 문제 목록에 공개됩니다.

  1. 문제: 제목과 설명
  2. 제한: 시간·메모리·출력 제한
  3. 예제: 풀이자에게 보여 줄 입력과 출력
  4. 채점: 채점 방식과 공개하지 않는 채점 테스트
  5. 정보: 출처, 본문 언어, 난이도, 태그

문제 구성

항목규칙
제목200자 이하
설명Markdown. 조건, ### 입력, ### 출력 순서로 씁니다. 수식은 $...$, $$...$$
예제1–10개. 풀이자에게 공개됩니다.
채점 테스트1–20개. 공개하지 않습니다.

제한

시간 제한은 의도한 풀이는 통과하고 느린 풀이는 넘기는 값으로 정합니다.

항목범위기본값
CPU 시간1 ms–10,000 ms1,000 ms
실행 시간CPU 시간 이상, 30,000 ms 이하3,000 ms
메모리1,024 KB–524,288 KB131,072 KB
출력8,192 KB 이하64 KB

채점 방식

  • 공백 기준 비교 (tokens): 공백과 줄바꿈 차이를 무시하고 단어를 비교합니다.
  • 완전히 일치 (exact): 공백과 줄바꿈까지 같아야 합니다.

답이 여러 개이거나 실수 오차를 허용하는 문제는 만들 수 없습니다.

좋은 채점 테스트

최대공약수 문제라면 다음을 넣습니다.

  • 가장 작은 입력과 두 수가 같은 경우: 1 1, 7 7
  • 배수 관계와 서로소: 12 36, 17 5
  • 큰 수가 뒤에 오는 경우: 18 12
  • 제약의 최댓값: 약수를 하나씩 확인하는 풀이가 시간 제한을 넘는 값

예상 출력은 정답 코드로 계산합니다.

출처와 저작권

직접 만든 문제는 출처를 자체 제작으로 둡니다. 저작권은 출제자에게 남고, 약관에 따라 서비스 이용을 허락합니다. 다른 사이트의 문제를 옮기지 않으며, 외부 자료를 바탕으로 한 문제는 원출처와 이용 조건을 고릅니다.

JSON으로 가져오기

Studio 새 문제의 가져오기에 JSON을 붙여 넣거나 .json 파일을 올립니다. Studio 어디에 파일을 끌어다 놓아도 새 문제로 가져옵니다.

필드규칙
format"codykata.problem-draft"
version1
language"ko" 또는 "en". 생략하면 현재 값을 유지합니다.
tags태그 이름 최대 10개. 없는 태그는 후보 태그가 됩니다.
problem.schema_version2
problem.title200자 이하
problem.content[{ "id": "statement", "type": "text", "text": "…" }]
problem.samples최대 10개 { "input", "output" }
problem.limitscpu_time_ms, wall_time_ms(ms), memory_bytes, output_bytes(바이트)
problem.checker{ "type": "tokens", "version": 1 } 또는 "exact"
problem.tests최대 20개 { "id", "input", "answer" }
  • 입력과 출력은 줄 끝마다 \n을 붙입니다.
  • content id는 영문 소문자로 시작하고 a-z0-9-만 씁니다. test id는 A-Za-z0-9_-를 씁니다.
  • 출처·난이도·이미지는 가져오지 않습니다.

예시

json
{
  "format": "codykata.problem-draft",
  "version": 1,
  "language": "ko",
  "tags": [
    "수학",
    "정수론"
  ],
  "problem": {
    "schema_version": 2,
    "title": "최대공약수",
    "content": [
      {
        "id": "statement",
        "type": "text",
        "text": "두 자연수 $A$와 $B$의 최대공약수를 구하세요.\n\n### 입력\n\n첫째 줄에 $A$와 $B$가 공백 하나로 구분되어 주어집니다. ($1 \\le A, B \\le 10^{18}$)\n\n### 출력\n\n$A$와 $B$의 최대공약수를 출력합니다."
      }
    ],
    "samples": [
      {
        "input": "12 18\n",
        "output": "6\n"
      },
      {
        "input": "17 5\n",
        "output": "1\n"
      }
    ],
    "limits": {
      "cpu_time_ms": 1000,
      "wall_time_ms": 3000,
      "memory_bytes": 134217728,
      "output_bytes": 65536
    },
    "checker": {
      "type": "tokens",
      "version": 1
    },
    "tests": [
      {
        "id": "t1",
        "input": "1 1\n",
        "answer": "1\n"
      },
      {
        "id": "t2",
        "input": "18 12\n",
        "answer": "6\n"
      },
      {
        "id": "t3",
        "input": "12 36\n",
        "answer": "12\n"
      },
      {
        "id": "t4",
        "input": "1000000000000000000 1\n",
        "answer": "1\n"
      }
    ]
  }
}

AI 도구와 함께 만들기

웹 페이지를 읽을 수 있는 AI 도구에 다음 문장을 보내면 위 형식의 JSON과 정답 코드를 받을 수 있습니다.

text
https://codykata.com/authoring.md 를 읽고, 그 형식에 맞춰 유클리드 호제법 문제를 하나 만들어 줘.

가져오기 전에 정답 코드로 예상 출력을 확인합니다.