문제의 제목을 입력합니다.
응시자에게 표시되지 않으며, 내부 관리용으로 사용되는 제목입니다.
예시) 머쓱이 대회 A부문 - 1번 문제
이미지 및 링크, 표 삽입이 가능합니다.
</>와, CB는 각각 인라인 코드, 코드 블럭을 나타냅니다.
보안 이슈로 실제 문제 페이지에서는 html이 작동하지 않습니다.
마크다운 방식과 편집기의 기능을 활용하여 작성해 주세요.
수식은 지문 입력 언어를 마크다운으로 선택 후 코드 블록(CB)을 열어 입력할 수 있습니다.
수식 입력은 레이텍(latex) 문법을 사용합니다.
수식 입력 시 가장 첫째 줄 ``` 옆에 latex를 입력 후 다음 줄 부터 수식을 입력합니다.
문제에 이미지 삽입하기
문제 지문에만 이미지를 삽입할 수 있습니다. (보기에는 이미지 삽입 불가)
이미지 파일을 직접 업로드 하시어 출제하실 것을 권장합니다.
외부 링크 이미지 업로드 혹은 이미지 붙여넣기는 권장하지 않습니다.
응시자가 문제를 풀기 위해 초기에 제공받는 최상위 디렉토리입니다.
이 폴더 내에는 응시 환경 설정 설명, 문제 지문, 그리고 각 파트별 스켈레톤(기본) 코드가 포함됩니다.
플랫폼에 과제를 탑재할 때는 최종적으로 이
problem/폴더를 압축하거나 전용 스크립트를 통해 패키징하여 업로드합니다.
백엔드는 공통 문서 폴더(general/)와 언어별 빌드 폴더를 분리하여 구성합니다.
기본형 (단일 스택 - Java Gradle 예시)
Plaintextproblem/ ├── general/ │ ├── data/ # 문제를 풀기 위해 제공되는 기본 데이터 변수/파일 │ ├── 0.필독.md # 응시 환경 설정 및 주의사항 설명 파일 │ └── 2.문제.md # 과제 요구사항 및 문제 설명 파일 ├── gradle/ # 자바(Gradle) 초기 스켈레톤 코드 └── make-problem-zip.sh # 플랫폼 탑재용 zip 파일을 만드는 쉘 스크립트확장형 (다중 스택 지원 예시)
Plaintextproblem/ ├── general/ │ ├── data/ # 문제를 풀기 위해 제공되는 기본 데이터 변수/파일 │ ├── 0.필독.md # 응시 환경 설정 및 주의사항 설명 파일 │ └── 2.문제.md # 과제 요구사항 및 문제 설명 파일 ├── gradle/ # 자바(Gradle) 초기 코드 ├── maven/ # 자바(Maven) 초기 코드 ├── nodejs/ # 자바스크립트(Node.js) 초기 코드 ├── python/ # 파이썬(Python) 초기 코드 └── make-problem-zip.sh # 플랫폼 탑재용 zip 파일을 만드는 쉘 스크립트
본 스크립트는 출제자가 구성한 로컬 폴더 구조를 Git 브랜치 기반의 독립된 개발 환경 구조로 자동 변환하고, 하나의 배포 패키지(git-problem.zip)로 제작하는 역할을 합니다.
스크립트 예시
출제자가 작성한 스크립트는 아래와 같은 구조와 순서로 동작합니다.
가이드를 커스텀할 때 참고하시기 바랍니다.
Plaintext# STEP 1. 빌드용 임시 작업 공간 생성 및 Git 초기화 mkdir git-problem && cd git-problem git init # git local user 설정 git config user.name "grepp" git config user.email "grepp@grepp" # STEP 2. 기본 브랜치(main) 구성 및 공통 안내서 커밋 cp ../general/0.응시환경.md . git add . && git commit -m "add 0.응시환경.md" # STEP 3. 스택별 브랜치 분기 및 스켈레톤 코드 주입 (e.g. gradle 스택 예시) git checkout -b gradle git add . && git commit -m "add 2.문제.md" # 공통 문제 지문 추가 cp -r ../gradle/* . # 해당 스택의 초기 스켈레톤 코드 주입 git add . && git commit -m "add gradle files" # STEP 4. 메인 브랜치 복귀 및 .git 폴더를 포함하여 전체 압축 git checkout main zip -r git-problem.zip * .[^.]* # hidden 폴더(.git)를 포함하여 압축 실행 # STEP 5. 배포 파일 추출 및 임시 폴더 클린업 mv git-problem.zip ../ cd .. && rm -rf git-problem
주요 단계별 동작 프로세스 요약
작업 공간 초기화: 배포 생성을 위한 임시 빌드 디렉토리를 생성하고 플랫폼 표준 사용자 정보로
git init을 수행합니다.기본 브랜치 빌드(
main): 모든 응시자가 공통으로 보게 되는 안내 문서(0.응시환경.md)를 최초로 커밋합니다.언어별 브랜치 분기 및 코드 주입:
main에서 각 기술 스택 브랜치(예:gradle,nodejs등)를 분기한 뒤, 출제자가 준비한 언어별 스켈레톤 코드를 루트 경로에 주입하고 독립 히스토리로 커밋합니다.압축 패키징 및 클린업: 다시
main브랜치로 전환한 후, 각 브랜치의 형상 관리 데이터 정보가 담긴.git폴더를 반드시 포함하여 전체 공간을git-problem.zip으로 압축하고 임시 폴더는 삭제합니다.
과제 파일 작성이 완료되면 아래 절차에 따라 배포 파일 생성 및 플랫폼 정상 구동 여부를 검증해야 합니다.
1. 업로드용 패키지(git-problem.zip) 생성
터미널에서 디렉토리 내에 포함된 쉘 스크립트를 실행하여 플랫폼 업로드용 압축 파일을 생성합니다.
Plaintextsh make-problem-zip.sh스크립트 실행 결과로 생성된
git-problem.zip파일을 업로드합니다.
2. 모의 테스트를 통한 검증
플랫폼에 파일 업로드 후, 테스트 페이지를 생성하여 모의 테스트를 실행하고 아래 항목들을 점검합니다.
첫 화면 랜딩 확인: 응시 첫 화면에서
main브랜치의0.필독.md내용이 깨짐 없이 정상적으로 노출되는지 확인합니다.Git 브랜치 구성 확인: 터미널 창에
git branch를 입력하여 출제 의도에 맞게 각 언어별/환경별 브랜치가 정상적으로 생성되어 있는지 확인합니다.초기 코드 및 스위칭 확인:
git switch [브랜치명]명령어로 각 언어별 환경으로 전환했을 때, 해당 스택의 초기 스켈레톤 코드가 누락 없이 존재하는지 확인합니다.
기본형 (바닐라 자바스크립트 예시)
Plaintextproblem/ ├── 필독.md # 문제 풀이 전 유의 사항 설명 파일 ├── 문제.md # 과제 요구사항 및 문제 설명 파일 ├── index.html # 기본 HTML 템플릿 파일 ├── index.js # 애플리케이션 진입(Entry) 파일 ├── style.css # HTML 문서의 스타일 지정 파일 ├── package.json # 프로젝트 설정 및 의존성 라이브러리 파일 └── ... # 문제 특성에 따라 추가되는 기타 파일확장형 (타입스크립트 TypeScript 예시)
Plaintextproblem/ ├── 필독.md # 문제 풀이 전 유의 사항 설명 파일 ├── 문제.md # 과제 요구사항 및 문제 설명 파일 ├── public/ # 컴파일이 필요 없는 정적 리소스 디렉토리 ├── src/ # 개발 소스 코드가 모여있는 디렉토리 │ ├── index.ts # 타입스크립트 진입(Entry) 파일 │ └── types.ts # 공통 인터페이스 및 타입 정의 파일 ├── package.json # 프로젝트 설정 및 의존성 라이브러리 파일 ├── tsconfig.json # 타입스크립트 컴파일 설정 파일 └── ... # 컴파일러/번들러 설정 파일 등 (예: vite.config.ts 등)
과제 파일 작성이 완료되면 아래 절차에 따라 배포 파일 생성 및 플랫폼 정상 구동 여부를 검증해야 합니다.
1. 탑재용 패키지(problem.zip) 생성
터미널에서
zip명령어를 사용하여 압축 파일을 생성합니다. 이때 불필요한 메타데이터나 로컬 환경 파일이 포함되지 않도록 제약 조건을 활용합니다.Plaintext# 예시: -x 옵션을 활용하여 불필요한 시스템 파일(.DS_Store 등)을 제외하고 압축 zip -r problem.zip . -x '*.DS_Store*'압축 완료 후 생성된
problem.zip파일을 업로드합니다.
2. 모의 테스트를 통한 검증
플랫폼에 파일 업로드 후, 테스트 페이지를 생성하여 모의 테스트를 실행하고 아래 항목들을 점검합니다.
파일 및 화면 노출 확인: 모의 테스트 진입 시
필독.md및문제.md내용이 정상적으로 노출되는지 확인합니다.개발 환경 구동 확인: 플랫폼 내 웹 컨테이너 환경에서 의존성 설치(
npm install) 및 번들러 구동이 에러 없이 작동하는지 확인합니다.정적 리소스 로드 확인:
public/디렉토리 내의 정적 파일(이미지, 아이콘 등)이 깨지지 않고 올바른 경로로 로드되는지 확인합니다.
플랫폼에서 응시자의 코드를 자동으로 채점하기 위한 테스트 케이스 코드와 빌드/실행 스크립트가 저장되는 최상위 디렉토리입니다.
플랫폼 탑재 시에는 최종적으로
evaluation/폴더 내부를 압축하여 업로드해야 하며, 채점 프로세스를 제어하는Procfile이 반드시 포함되어야 합니다.(채점 시 해당 파일을 트리거로 채점이 실행됩니다.)
Procfile은 채점 서버가 응시자의 코드를 빌드하고 테스트를 실행하는 단계를 정의하는 설정 파일입니다.기본 명령어 양식
Plaintext##### Profile 양식 ##### init: ## 데이터 폴더 대체 등 빌드 전 사전 작업 단계 build: ## 응시자 프로젝트 빌드 단계 (e.g. gradle build, npm install) run: ## 응시자 프로젝트 실행 단계 (e.g. gradle run) prepare-test: ## 테스트 코드 구동 준비 단계 (e.g. npm ci) test: ## 테스트 코드 실행 및 채점 단계✔️ 해당 과제에서 필요하지 않은 단계가 있다면
/bin/true를 작성하여 해당 단계를 에러 없이 건너뛸 수 있습니다.
응시자가 플랫폼에서 [코드 채점] 버튼을 누르면, 시스템 내부적으로 ‘응시자 환경(Project/)’의 모든 파일과 폴더가 ‘채점코드 환경(evaluation/)’의 루트 디렉토리 직하로 합쳐진 후 Procfile 명령어가 실행됩니다.
따라서 Procfile 스크립트와 test/ 내부의 테스트 케이스 경로는 반드시 아래의 [병합 후 최종 구조]를 기준으로 작성되어야 합니다.
응시자 환경 (제출된 소스 코드)
응시자가 최종 시험을 치르고 제출한 시점의 프로젝트 구조입니다.
PlaintextProject/ (응시자 환경 예시) ├── data/ # 문제 풀이용 기본 데이터 폴더 ├── 0.필독.md # 환경 설정 안내 파일 ├── 2.문제.md # 문제 지문 파일 └── gradle/ # 응시자가 코드를 구현한 스프링 개발 환경 폴더
채점코드 환경 (출제자가 업로드한 테스트 코드)
출제자가 플랫폼 채점 관리 화면에
evaluation.zip으로 탑재한 채점 스펙 구조입니다.Plaintextevaluation/ (출제자 채점 환경) ├── Procfile # 자동 채점 프로세스 제어 파일 (필수) └── tests/ # 채점 테스트 케이스 폴더 ├── problem.specs.js └── jest.config.js
채점 동작 환경
채점이 시작되는 순간, 위의 두 환경이 결합하여 아래와 같은 하나의 트리 구조를 형성합니다.
evaluation
├── Procfile - 자동 채점을 위한 설정 파일
├── tests - 자동 채점을 위한 폴더
├── problem.specs.js - 테스트 케이스 코드가 작성된 파일
├── jest.config.js - jest config 설정 파일
... - 이외의 파일 및 폴더는 문제마다 다르게 구성기본값 (Standard)
적어주지 않은 단계는 플랫폼 기본 설정값으로 자동 수행됩니다.
사용 예시 (특정 데이터 주입이 필요한 경우)
테스트 실행 전 제공된 기본 데이터를 초기화하거나 교체해야 할 때(예: 숙박 예약 문제 등)
init단계를 활용합니다.
evaluation
├── Procfile - 자동 채점을 위한 설정 파일
├── tests - 자동 채점을 위한 폴더
├── problem_1 - 문제 별 테스트 코드 폴더
├── test.spec.ts
├── IntegrationTests.spec.ts. - 테스트 코드 통합 채점 파일
├── customerReporter.ts - 채점 결과 파일
├── playwright.config.ts - playwrigh config 파일
... - 이외의 파일 및 폴더는 문제마다 다르게 구성기본값 (Standard)
사용 예시 (Playwright을 사용하여 테스트하는 경우)
불필요한 빌드나 독립 구동 과정을 스킵하고 테스팅 도구 환경에 맞춰 단계를 완전히 덮어쓸 때 사용합니다.
모든 테스트 케이스와 Procfile 작성이 완료되면 아래 절차에 따라 압축하여 업로드합니다.
1. 필수 폴더 포함 여부 확인
채점 파일 루트 경로에
Procfile파일이 반드시 포함되어 있는지 사전에 확인합니다. (누락 시 채점 오작동 가능성 있음)
2. zip 명령어로 압축 파일 생성
터미널에서 불필요한 OS 메타데이터를 제외하는 옵션을 사용해
evaluation.zip을 생성합니다.Plaintextzip -r evaluation.zip . -x '*.DS_Store*'
3. 파일 업로드
생성이 완료된
evaluation.zip파일을 플랫폼 채점 파일 업로드란에 탑재합니다.
문제 풀이에 필요한 권장 시간을 입력합니다.
실제 문제 풀이 제한 시간은 테스트 생성 시 설정할 수 있습니다.