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

{% 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. 채점 옵션

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.goorm.io/ko/edu-lecturer/04.quiz/programming.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
