코드 작성시 디버깅과 편의를 위해 로컬 컴퓨터의 개발 도구를 사용할 수 있습니다.
이 경우 로컬 컴퓨터에서의 개발 환경과 채점에서의 개발 환경이 달라 실행이나 채점이 되지 않는 불이익이 없도록 본 안내를 꼭 읽어보시기 바랍니다 (특히 Visual Studio / Visual C++ 사용시).
코드 제출 문제에 제출된 모든 코드의 실행과 채점은 이 사이트의 환경 위에서 이루어집니다. 해당 환경에서 동작하지 않는 코드는 채점이 되지 않습니다. 유념하여 개발 도구를 사용해주시기 바랍니다.
OS는 Ubuntu가 구동되며, 각 언어별로 사용되는 컴파일러는 다음과 같습니다:
언어 | 버전 및 실행 환경 (ubuntu) | 컴파일러 옵션 | 실행 옵션 |
---|---|---|---|
C | GNU C: gcc 7.5.0 | -O2 -static | |
C 11 | GNU C: gcc 7.5.0 | -O2 -static --std=c11 | |
C++ | GNU C++: g++ 7.5.0 | -O2 -static --std=c++03 | |
C++ 11 | GNU C++: g++ 7.5.0 | -O2 -static --std=c++11 | |
C++ 14 | GNU C++: g++ 7.5.0 | -O2 -static --std=c++14 | |
C++ 17 | GNU C++: g++ 7.5.0 | -O2 -static --std=c++17 | |
C# | Mono C# 4.6.2.7 | -codepage:utf8 -warn:0 -optimize+ -clscheck- -reference:System.Numerics.dll | --optimize=all |
Java | OpenJDK 1.8.0 | ||
Python 2 | CPython 2.7.17 | ||
Python 3 | CPython 3.6.9* | ||
Pypy 2 | Python 2.7.13 PyPy 5.10.0 with GCC 7.3.0 |
(*) Windows 환경에서 CPython 3.6.9가 제공되지 않는 경우 참가자는 3.6.8 버전을 사용할 수 있습니다. 3.6.8과 3.6.9의 차이는 보안취약점 수정여부이지만, 만에 하나 버전 차이로 인해 채점 결과에 차이가 발생할 경우 주최측은 책임을 지지 않는 점 양해 부탁드립니다.
각 문제에서 시간과 메모리 제한은 C/C++ 기준으로 책정됩니다. 그 이외의 언어에서는 시간과 메모리를 더 쓸 수 있도록 허용되는 경우가 있지만, 모든 문제를 모든 언어로 해결할 수 있다는 보장은 드리지 않습니다. 문제를 해결하는 데 계산 자원이 많이 필요하다고 판단되면 C/C++를 사용할 것을 권장합니다.
아래의 예시처럼 특정 플랫폼(특히, Windows나 Visual C++)에서만 동작하는 코드를 작성하지 않도록 유의하시기 바랍니다.
사용금지 예시 | 비고 |
---|---|
void main() | 표준에 따라 int main 이어야 함 |
getch() | 대신 getchar() 를 사용 |
fflush(stdin) | 비표준 |
GetTickCount() | Windows API 는 사용할 수 없음 |
CString | CString 은 표준이 아니며 사용할 수 없음. 대신 std::string 을 사용 |
#include <stdafx.h> | stdafx.h 는 Visual C++ 전용 precompiled header 임 |
클래스 이름은 반드시 Main
이어야 합니다.
GNU C/C++ 환경에서 프로그램을 작성할 경우 MinGW와 Code::Blocks 사용을 권장합니다. 아래의 URL에서 다운로드 받을 수 있습니다.
모든 코드 제출 문제에서는 주어진 입력 형식에 따라 표준 입력 (standard input)으로 입력을 받고 주어진 출력 형식에 따라 표준 출력(standard output)으로 출력해야 합니다.
아래 예시와 같이 두 개의 정수를 받아 곱하여 출력해야 하는 문제가 있다면, 언어별로 표준 입력과 표준 출력을 처리하는 방법은 아래와 같습니다.
8 4
32
#include <stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d\n", a * b);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a * b << endl;
return 0;
}
using System;
public class Program {
public static void Main() {
string s = Console.ReadLine();
string[] arr = s.Split();
int a = int.Parse(arr[0]);
int b = int.Parse(arr[1]);
Console.WriteLine(a * b);
}
}
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int a, b;
a = sc.nextInt();
b = sc.nextInt();
System.out.println(a * b);
}
}
s = raw_input()
arr = split()
a = int(arr[0])
b = int(arr[1])
print a*b
s = input()
arr = s.split()
a = int(arr[0])
b = int(arr[1])
print(a*b)
작성된 프로그램은 프로그램의 종료 코드가 항상 0 (정상종료)이 되어야합니다. 0으로 종료되지 않는 경우 맞는 답을 출력하는 프로그램을 제출하였더라도 채점이 되지 않을 수 있습니다. 특히 종료 코드를 0으로 하는 코드를 제출하였더라도 작성한 프로그램의 런타임 에러 여부에 따라 0이 아닌 코드로 종료될 수 있습니다.