> For the complete documentation index, see [llms.txt](https://help.goorm.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.goorm.io/ko/edu-lecturer/04.quiz/programming.md).

# 일반 프로그래밍 문제 만들기

{% hint style="info" %}
**일반 프로그래밍 문제**는 채점모드, 제출모드, 실행모드로 문제를 생성할 수 있습니다.
{% endhint %}

이 문서에서는 **일반 프로그래밍 문제**를 입력하는 내용만을 다룹니다. \
새로 문제를 만들 때 기본적으로 입력하는 사항들에 대해서는 \
"문제 가져오기 및 공통 설정" 도움말을 참고해주세요.&#x20;

{% content-ref url="/pages/-LrsSaGzbBU26HJdqGao" %}
[문제 가져오기 및 공통 설정](/ko/edu-lecturer/04.quiz/import-and-configuration.md)
{% endcontent-ref %}

\
'**일반 프로그래밍 문제**'에서는 다양한 프로그래밍 언어를 지원하며, \
동일한 문제에 대해서 여러 프로그래밍 언어를 활용하여 문제를 풀 수 있도록 할 수 있습니다.<br>

### 1. 문제 해결 언어

문제 해결을 위해 사용 가능한 언어를 선택하고 기본 예제 코드를 작성하는 항목입니다. \
에디터로 코드 작성, 구름IDE 파일 업로드 옵션을 이용할 수 있습니다.

원하는 프로그래밍 언어를 선택하면 기본적으로 수강자들에게 보일 소스 코드를 직접 수정하거나, \
어디부터 입력하면 될 지, 또는 무엇을 입력하면 될 지 알려주는 '**가이드**'라는 요소도 삽입할 수 있습니다.

![](/files/-M0ROpsm2n5_twmOe2Lc)

\
가이드 문구로 삽입을 원하는 코드를 드래그한 뒤에 '**`가이드 문구로 설정`**' 클릭하면 \
아래 화면처럼 가이드 코드로 등록됩니다.

![](/files/-M0ROu6_MQNI7gJTWn38)

또한 코드의 행을 분리하여 숨김/읽기전용으로 처리(뼈대코드)할 수 있습니다.

![](/files/-M0RPpRG9qd_xudU9nDm)

문제 해결 언어로 복수의 프로그래밍 언어를 선택하는 것이 가능하며, \
이 경우 수강자는 자유롭게 원하는 언어를 선택하여 문제를 해결할 수 있습니다. \
설정한 언어 별로 '컴파일러 설정', '언어 설정', '빌드 옵션', '실행 옵션', '프로그램의 수행시간 제한' 등의 \
다양한 입력란이 있습니다. 해당 입력란에 원하는 옵션을 자유롭게 입력할 수 있습니다. \
\
Java 언어의 경우에는 메인 클래스 입력란이 추가로 배치되어 있습니다. \
**메인 클래스 입력란에 프로그램의 시작이 되는 클래스를 반드시 입력해주어야 합니다.**

C/C++ 언어에 대해 `g++ 7.4`, `clang 3.8` 두 가지 중 하나를 선택할 수 있으며, \
추후 선택 가능한 옵션이 더 추가될 예정입니다.

![](/files/-M0RNRVLAMSSpOCqNMi3)

![](/files/-M0RNcm3zlxE_ha06stk)

###

### 2. 실행 옵션

![](/files/-M7a5QpyQQar-MHw2CGK)

실행옵션은 실행결과 화면과 수행시간 제한 등을 설정할 수 있으며 \
수강자의 입・출력파일 저장 및 저장경로를 지정할 수 있습니다.

* **수행시간 제한:** \
  "실행" 후 프로세스가 종료되기까지 걸리는 시간 제한을 설정합니다.
* **입력 파일:** \
  수강자의 프로그램 실행 중 파일입력에 사용할 파일을 `data/` 폴더에 등록할 수 있습니다. \
  등록한 파일은 최대 5개까지 에디터에 보여집니다.\
  업로드한 입력파일을 다시 제거하고 싶다면 오른쪽 **`-`** 버튼을 클릭하여 \
  입력파일 창을 닫으신 후 저장해주세요.
* **출력 파일:** \
  수강자가 프로그램 실행 후 다운로드 받아서 확인할 수 있도록 파일의 이름과 경로를 지정합니다.

**채점 답안**과 **채점 옵션**은 **새 문제 만들기 -> 문제 유형**에서 **채점 모드**를 선택했을 때만 입력 가능합니다.

#### <br>

### 3. 채점 답안

채점 답안에서 입력값과 출력값의 개수를 지정할 수 있고, 값을 직접 입력하거나 \
파일을 업로드하여 작성할 수 있습니다. 채점 예시 별로 채점 비율을 설정할 수 있습니다.

정수 a와 b를 입력받고 두 수의 곱을 출력하는 문제의 채점 답안을 작성하는 예를 보도록 하겠습니다.\
4개의 입력값과 출력값 쌍으로 문제를 채점하려고 할 때, \
아래 표와 같은 형태로 채점 케이스별 입력값, 출력값, 비율을 입력할 수 있습니다.

|     | 입력값   | 출력값 | 비율 |
| --- | ----- | --- | -- |
| 채점1 | 10 20 | 200 | 25 |
| 채점2 | 5 9   | 45  | 25 |
| 채점3 | 7 7   | 49  | 25 |
| 채점4 | 16 6  | 96  | 25 |

문제를 푸는 학생이 작성한 코드는 위와 같이 입력된 채점 답안의 \
입력값, 출력값 충족 여부를 기준으로 채점됩니다.

### 4. 채점 옵션

채점 옵션에서 공백, 줄바꿈, 쉼표, 마침표 무시 옵션 등을 설정할 수 있습니다.
