채점 환경
BeeTREE 채점기가 제출 코드를 어떻게 실행하는지에 대한 안내. 컴파일/실행 명령은 실제 운영 채점기와 자동으로 동기화됩니다.
채점 절차 요약
- 제출 코드는 임시 디렉터리에 저장되어 격리된 컨테이너 안에서 실행됩니다.
- 컴파일이 필요한 언어는 먼저 컴파일 단계가 수행되며, 컴파일 실패 시 즉시
compile_error로 종료됩니다. - 각 테스트케이스의 입력은 표준입력(stdin)으로 주어지고, 표준출력(stdout)이 정답과 비교됩니다.
- 출력 비교는 줄 끝/마지막 개행 정도의 사소한 차이는 허용하며, 그 외에는 정확히 일치해야
accepted. - 스페셜 저지(checker) 가 설정된 문제는 정답과의 직접 비교 대신 채점 스크립트의 판정을 따릅니다.
- 모든 단계는 시간/메모리 제한 안에서 끝나야 하며, 초과 시 각각
time_limit_exceeded/memory_limit_exceeded. - 런타임 에러(0이 아닌 종료코드, 시그널, 예외)는
runtime_error로 분류됩니다.
샌드박스
- 각 제출은 독립된 Docker 컨테이너 안에서 실행되며, 채점기 호스트의 파일/네트워크에 접근할 수 없습니다.
- 네트워크는 비활성화 (
--network=none), 외부 통신 불가. - 실행 디렉터리는 컨테이너 내부 임시 영역으로, 채점이 끝나면 즉시 삭제됩니다.
- 컴파일/실행 프로세스는 비-루트 유저(
nobody) 권한으로 동작합니다. - 동시에 너무 많은 프로세스가 생성되지 않도록 언어별 PID 제한이 적용됩니다.
- 채점 시스템 자체에 대한 공격 시도(컨테이너 탈출, 자원 고갈 등) 는 즉시 계정 제한 사유입니다.
제한 시간 · 메모리
- 각 문제마다 시간 제한과 메모리 제한이 표시되며, 모든 테스트케이스에 동일하게 적용됩니다.
- 시간 제한은 wall-clock(실행 경과 시간) 기준입니다. 컴파일 시간은 별도로 측정되며 채점 시간에 포함되지 않습니다.
- 컴파일러/인터프리터의 시작 오버헤드(JVM 등) 는 실행 시간에 포함되므로 언어별 보너스가 적용됩니다.
- 아래 표의 "최대 실행시간" 은 컨테이너가 강제 종료되는 절대 상한이며, 실제 채점은 문제별 시간 제한이 우선 적용됩니다.
언어별 컴파일 · 실행 명령
환경설정 → 컴파일러 버전에서 다른 버전을 선택하면 해당 버전 이미지로 채점됩니다. Python 3.11 ~ 3.14, GCC 12 ~ 14 등 여러 버전을 지원합니다.
Assembly (32-bit)
sol.asm최대 10s
Compile
nasm -f elf32 sol.asm -o sol.o && if grep -Eq '^[[:space:]]*global[[:space:]]+_start([[:space:]]|$)' sol.asm; then ld -m elf_i386 sol.o -o sol; else gcc -m32 -no-pie sol.o -o sol; fi
Run
./sol
Assembly (64-bit)
sol.asm최대 10s
Compile
nasm -f elf64 sol.asm -o sol.o && if grep -Eq '^[[:space:]]*global[[:space:]]+_start([[:space:]]|$)' sol.asm; then ld sol.o -o sol; else gcc -no-pie sol.o -o sol; fi
Run
./sol
Bash
sol.sh최대 15s
Run
bash sol.sh
C
지원 버전: GCC 13 · GCC 15 · GCC 14 · GCC 12
sol.c최대 10s
Compile
gcc -O2 -o sol sol.c -lm
Run
./sol
C#
sol.cs최대 15s
Compile
mcs -out:sol.exe sol.cs
Run
mono sol.exe
C++
지원 버전: GCC 13 · C++17 · GCC 14 · C++23 · GCC 15 · C++23 · GCC 15 · C++26 (실험적) · GCC 12 · C++17
sol.cpp최대 10s
Compile
g++ -O2 -std=c++17 -o sol sol.cpp -lm
Run
./sol
Go
지원 버전: Go 1.22 · Go 1.23 · Go 1.21
sol.go최대 10s
Compile
go build -o sol sol.go
Run
./sol
Java
지원 버전: Java 21 · Java 17 (LTS)
Main.java최대 15s
Compile
javac Main.java
Run
java -XX:+UseContainerSupport Main
JavaScript (Node.js / Bun)
지원 버전: Node.js 20 · Node.js 22 · Node.js 18 · Bun 1.x
sol.js최대 15s
Run
node sol.js
Kotlin
Main.kt최대 20s
Compile
kotlinc Main.kt -include-runtime -d sol.jar
Run
java -XX:+UseContainerSupport -jar sol.jar
OCaml
sol.ml최대 10s
Compile
ocamlopt -O2 -o sol sol.ml
Run
./sol
PHP
sol.php최대 15s
Run
php sol.php
Python
지원 버전: Python 3.14 · Python 3.13 · Python 3.12 · Python 3.11
sol.py최대 15s
Run
python3 -B sol.py
Ruby
sol.rb최대 15s
Run
ruby sol.rb
Rust
지원 버전: Rust 1.77 · Rust 1.80
sol.rs최대 10s
Compile
rustc -O -o sol sol.rs 2>/dev/null
Run
./sol
Swift
sol.swift최대 15s
Compile
swiftc -O -o sol sol.swift
Run
./sol
TypeScript (Deno)
sol.ts최대 15s
Run
deno run --quiet --no-prompt sol.ts
Visual Basic
sol.vb최대 15s
Compile
vbnc -out:sol.exe sol.vb > /dev/null
Run
mono sol.exe
아희 (Aheui)
sol.aheui최대 15s
Run
aheui sol.aheui
엄준식
sol.umm최대 15s
Run
umjunsik sol.umm
참고 — Java/Kotlin 같은 JVM 언어는 컨테이너 메모리 인식을 위해-XX:+UseContainerSupport 옵션이 자동 적용됩니다. C/C++ 는 -O2 최적화, Rust 는 -O, OCaml 은 -O2 가 켜진 상태로 컴파일됩니다. 채점 환경 관련 문의는 BeeTREE Discord로 연락 주세요.