CodingPanda FAQ

Q:이 채점시스템에서 사용하는 코드 컴파일 옵션은?
A:이 채점시스템은 Debian Linux에서 운영됩니다. C/C++ 코드는 GNU GCC/G++ 컴파일러, Java 코드는 openjdk-7-jdk 컴파일러를 사용합니다. 각 언어별 코드 컴파일 옵션은 다음과 같습니다.:

C: gcc Main.c -o Main -fno-asm -Wall -lm --static -std=c17 -DONLINE_JUDGE
C++: g++ Main.cc -o Main -fno-asm -Wall -lm --static -std=c++17 -DONLINE_JUDGE
Java: javac -J-Xms32m -J-Xmx256m Main.java
*Java 코드를 실행하고 채점하는 경우 +2초, +512MB 가 추가됩니다.

- 컴파일러 버전은 다음과 같습니다.:
gcc/g++ version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
Glibc 2.35-0ubuntu3.6
Openjdk-16
Python 3.10.12

Q:코드 작성시 데이터 입출력은 어떻게 하나요?
A:stdin('표준입력')에서 읽고, stdout('표준출력')으로 출력해야합니다. 예를 들어, C언어에서는 'scanf', C++ 언어에서는 'cin' 을 이용해서 stdin(입력)을 읽어들입니다. 또한, C언어에서는 'printf', C++언어에서는 'cout'을 이용해 stdout(출력)으로 출력할 수 있습니다.
파일 입출력을 사용한 코드를 제출하는 경우에는 "Runtime Error(실행 중 에러)" 메시지를 받게 됩니다.

C++ 입출력 예시:
#include <iostream>
using namespace std;
int main(){
    //c++ 입출력 속도로 인한 시간 초과 방지를 위해 반드시 작성(선택)
    ios::sync_with_stdio(false);
    //대용량(10Mb)이상의 파일 입력시 메모리 부족으로 인한 시간초과를 방지하기 위해 사용
    //입출력 버퍼 비동기화 설정(선택))
    cin.tie(nullptr);
    cout.tie(nullptr);
	
    int a,b;
    while(cin >> a >> b)
        cout << a+b << endl;
    return 0;
}
C 입출력 예시:
#include <stdio.h>
int main(){
    int a,b;
    while(scanf("%d %d",&a, &b) != EOF)
        printf("%d\n",a+b);
    return 0;
}
Java 입출력 예시:
import java.util.*;
public class Main{
	public static void main(String args[]){
		Scanner cin = new Scanner(System.in);
		int a, b;
		while (cin.hasNext()){
			a = cin.nextInt(); b = cin.nextInt();
			System.out.println(a + b);
		}
	}
}

Q:컴파일 에러는 언제 발생하나요?!
A:GNU 와 MS-VC++ 는 다음과 같이 다릅니다.:

Q:채점 코드 제출 후 받게 되는 메시지들은 어떤 의미인가요?
A:채점 코드 제출 후 받게 되는 메시지들의 의미는 다음과 같습니다.:

- 채점 대기중 : 코드가 제출되고 채점을 기다리고 있는 상태입니다. 대부분의 경우 조금만 기다리면 채점이 진행됩니다.
- 재채점 대기중 : 채점 데이터가 갱신되어 재채점을 기다리고 있는 상태입니다.
- 컴파일중 : 제출된 코드를 컴파일 중이라는 의미입니다.
- 채점중: 채점이 진행되고 있는 상태라는 의미입니다.
- 정확한 풀이 : 모든 채점 데이터에 대해서 정확한 답을 출력했다는 의미입니다.
- 표현 에러 : 출력된 결과가 문제에서 출력해야하는 출력형식과 다르게 출력되었다는 의미입니다. 문제의 출력형식에서 요구하는 형식과 똑같아야 합니다. 답 출력 후 출력형식에는 없는 공백문자나 줄 바꿈이 더 출력되지는 않았는지 확인해 보아야 합니다.
- 잘못된 풀이 : 틀린 답을 출력한 것을 의미합니다. 채점 시스템에 등록하는 채점 데이터들은 외부로 공개하지 않는 것이 일반적입니다. 제출한 코드가 틀린 답을 출력하는 경우가 어떤 경우일지 더 생각해 보아야 합니다.
- 시간 초과 : 제한시간 이내에 답을 출력하지 못했다는 것을 의미합니다. 좀 더 빠르면서도 정확한 결과를 출력하도록 소스 코드를 수정해야합니다.
- 메모리 초과 : 제출한 프로그램이 제한된 메모리용량보다 더 많은 기억공간을 사용했다는 것을 의미합니다. 일반적으로는 메모리를 더 적게 사용하는 코드로 수정해야합니다.
- 출력 제한 초과: 제출한 프로그램이 제한된 출력량 이상으로 결과를 출력했다는 것을 의미합니다. 대부분의 경우 무한 반복 실행 구조에 의해 발생합니다. 채점 시스템의 출력 제한 바이트 수는 1M bytes 입니다.
- 실행 중 에러 : 제출한 프로그램이 실행되는 도중에 오류가 발생했다는 것을 의미합니다. 예를 들어, 'segmentation fault(허용되지 않는 메모리 영역에 접근하는 경우: 배열 인덱스 초과 등)','floating point exception(실수 계산 예외: 0 으로 나누는 등)','used forbidden functions(제한된 함수를 사용한 경우: 파일 처리 함수 등이 사용된 경우 등)', 'tried to access forbidden memories(허용되지 않는 시스템 메모리 영역 등에 접근하는 경우 등)' 등에 의해 발생합니다.
- 컴파일 에러 : 제출한 소스코드를 ANSI 표준(gcc/g++/gpc) 컴파일러로 컴파일하지 못했다는 것을 의미합니다. 컴파일 오류 메시지가 아닌 오류 경고(warning)는 이 메시지를 출력하지 않습니다. 메시지 부분을 누르면 컴파일 오류 메시지를 확인할 수도 있습니다.

Q: 온라인 대회(Online Contests)는 어떻게 참가하나요?
A: 먼저 회원가입 을 통해 계정을 만들어야 온라인 대회에 참여할 수 있게 됩니다.


Q: 문제는 어떻게 분류되어 있나요?
A: 아래 표를 참고하여 주세요.
문제 번호 분류
1001~ 기초문제
2001~ 응용문제
3001~ 교내대회
4001~ SFPC/지역대회
5001~ KOI
6001~ IOI(예정)
7001~ 7001~7400 Numpy
7401~7700 Pandas
7701~7999 Matplotlib
8001~ 미사용
9001~ 분류전 문항

궁금한 내용이나 건의사항은 게시판를 사용해 도움 받을 수도 있습니다.

CodingPanda 20.09.15