FAQ : 정보올림피아드&알고리즘

FAQ검색

FAQ 목록

  1. Q

    채점을 위해 사용되는 컴파일러와 각 컴파일러의 옵션은 어떤것입니까?

    A

    채점 시스템은 Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-29-generic x86_64)에서 구동됩니다. 

    C/C++ 코드 컴파일을 위해 GNU GCC/G++를 사용하고 있으며, Java 코드 컴파일을 위해 sun-java-jdk1.8를, python 코드 컴파일을 위해 python 3.6.9을 사용합니다. 컴파일을 위해서 다음과 같은 옵션을 사용합니다:

     

    C : gcc Main.c -o Main -O2 -fmax-erroe=10 -Wall -lm --static -std=c99 -DONLINE_JUDGE
    C++ : g++ Main.c -o Main -O2 -Wall -lm --static -pipe -std=c++14
     -DONLINE_JUDGE

    Java : javac Main.java
    Python : python Main.py


    각 컴파일러의 버전:

    gcc/g++ : gcc/g++ (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0

    Java : openJDK 11.0.6 2020-01-14 (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)

    Ptyhon : Python 3.6.9 

  2. Q 입력과 출력은 어떻게 받나요?

    A

    채점을 위해서 입력은 stdin('Standard Input')을 통해 받게 되며, stdout('Standard Output')에 출력하게 됩니다.

    자세하게 이야기 하자면, 입력을 위해서는 'scanf(C)/cin(C++)'을, 출력을 위해서 'printf(C)/cout(C++)' 을 사용하게 됩니다
    사용자가 작성한 프로그램은 파일을 읽고 쓰는 것이 금지 되어 있으며, 이러한 경우, "Runtime Error" 를 받게 됩니다.

     

    아래의 코드들은 Code 1000번의 예제 입니다.

     

    * C 예시코드:
    #include <stdio.h>
    int main(){
        int a,b;
        while(scanf("%d %d",&a, &b) != EOF)
            printf("%d\n",a+b);
     return 0;
    }


     * C++ 예시코드:
    #include <iostream>
    using namespace std;
    int main(){
        int a,b;
        while(cin >> a >> b)
            cout << a+b << endl;
     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);
          }
       }
    }


     * Python 예시코드:

    -*- coding: utf8 -*-
    a = input()
    print a

  3. Q

    제가 테스트 해보았을 떄는 잘 돌아가는데 결과로 Compile Error가 뜹니다. 왜그럴까요?

    A

    일반적으로 MS-VC++를 사용하였을 경우에 발생하며, GNUMS-VC++에서 생기는 차이점에 의하여 발생합니다.

    예를 들면 다음과 같습니다:

    • G++에선 main이 반드시 int형으로 선​언되어야 하며, void main을 사용하게 되면 Compile Error를 받게 됩니다..
    • for(int i=0...){...}"와 같이 for문 안에 int변수를 선언하였을 경우 block을 벗어났을 때 i 변수는 사라지게 됩니다.
    • itoa ANSI 에서 규정한 표준 함수가 아닙니다.
    • VC에서의 __int64ANSI 표준이 아닙니다. 하지만 64비트 integer 변수를 사용하기 위해 long long을 사용할 수 있습니다.
    • JAVA의 경우 class의 이름은 Main 으로 해주세요. " public class Main {...}"
  4. Q 채점 결과의 뜻은 무엇인가요?

    A

    채점결과들의 의미는 다음과 같습니다:

    • Pending : 채점이 밀려서 아직 채점이 완료 되지 않은 대기 상태. 일반적으로 1분 이내에 채점이 됩니다.
    • Pending Rejudge: 테스트 데이터를 새로이 고치거나 했을 경우, 해당 제출 코드를 다시 채점하게 되어 대기 상태로 들어가는 경우.
    • Compiling : 채점을 하기 위해 컴파일 하는 중에 나타납니다.
    • Running & Judging: 채점이 진행되고 있음을 의미합니다.
    • Success : 제출한 프로그램이 모든 테스트 데이터를 통과했음을 뜻합니다.
    • Accepted : 제출한 프로그램이 테스트 데이터를 부분적으로 통과했음을 뜻합니다.
    • Presentation Error : 출력 결과가 테스트 데이터와 유사하나, 공백, 빈 줄과 같은 사소한 문제로 인해 출력 결과가 일치하지 않는 경우입니다.
    • Wrong Answer : 출력 결과가 테스트 데이터와 다른 경우 입니다.
    • Time Limit Exceeded : 제출한 프로그램이 제한된 시간이내에 끝나지 않은 경우를 뜻합니다.
    • Memory Limit Exceeded : 제출한 프로그램이 허용된 메모리보다 많은 메모리를 사용했을 경우를 뜻합니다.
    • Output Limit Exceeded : 예상하는 보다 많은 출력이 발생한 경우 입니다. 일반적으로 프로그램이 무한 루프에 빠졌을 경우에 일어납니다. 현재 채점 시스템에서 출력 제한은 1메가 바이트로 제한됩니다.
    • Runtime Error : 실행 도중에 'segmentation fault','floating point exception','used forbidden functions', 'tried to access forbidden memories' 등의 에러가 발생하여서 실행도중에 프로그램이 종료된 경우 입니다.
    • Compile Error : 컴파일러가 제출한 소스코드를 컴파일 하지 못한 경우입니다. 물론 경고 메시지(warning message)는 에러 메시지로 간주하지 않습니다. 채점 결과를 클릭하면 실제 에러 메시지를 볼 수 있습니다.

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호

TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com

Copyrightⓒ 2010-2019 jungol. All right reserved.

TOP