1 부. OJ 시스템사용법 1. 회원가입및로그인 1) http://ex-oj.sejong.ac.kr 접속후메인화면의우측상단 Sign up 선택 - 학번 (Student ID), 비밀번호, 비밀번호확인, 이름, E-mail 입력후 Register 버튼클릭 2) 메인화면에서우측상단의 Login 선택, 학번및비밀번호입력후엔터또는 아래파란색 Login 버튼클릭 - 1 -
2. 과목선택및코드제출 1) 로그인후메인화면에서본인이수강중인과목 / 대회선택 2) 원하는메뉴선택 ( 과제, 실습등 ) 3) 문제선택 - 각메뉴별로시작, 마감시간제한이있으며, 각문제별로도시작, 마감시간제한이존재 - 메뉴또는문제별시작시간이아직되지않았거나, 마감시간이지난경우, 소스코드제출불가능 - 2 -
4) 문제정보확인후 Submit 버튼으로제출 5) 사용언어선택및소스코드작성후 Submit 버튼클릭 - 3 -
3. 채점결과확인 1) 채점결과화면 - 본인이제출한 submission 의결과를아래와같이확인할수있다. Ÿ Score - 100점만점에본인이획득한점수 Ÿ Code( 언어 /edit ) - 언어 를클릭하면자신이제출한코드를볼수있음 - edit 을클릭하면자신이제출한코드를수정및제출할수있음 Ÿ time/memory - submission이수행되는데사용한시간과 Memory 크기 Ÿ 검색 - User ID 칸에자신의학번을입력하고 search를누르면해당문제에서자신이제출했던기록을볼수있음 - Result 옆드롭다운에서원하는결과를선택하고검색하면해당하는 submission들이보임 - Language 역시위와동일 Ÿ Result : 채점결과 ( 결과에대한상세설명은아래표에있음 ) - Compile Error 발생시채점결과를클릭하여상세한오류정보확인 - Compile Error를제외한결과는상세한오류정보를제공하지않음 - 4 -
- 채점결과안내 1 Judging( %) 채점중인상태, 일반적으로 1 분이내에채점이완료됨 2 Accept 3 Presentation Error 4 Wrong Answer 제출된프로그램이모든테스트데이터를통과하였음을의미 ( 정답 ) 출력결과가테스트데이터와유사하나, 공백이나빈줄과같은사소한문제로인해출력결과가일치하지않는경우제출된프로그램이모든테스트데이터를통과하지못한경우 5 Time Limit 제출한프로그램이제한된시간이내에끝나지않은경우 6 Memory Limit 제출한프로그램이허용된메모리보다많은메모리를 사용한경우 7 Output Limit 비정상적으로많은출력이발생한경우 8 Runtime Error 9 Compile Error 프로그램이실행도중에종료된경우채점결과를클릭하여상세한오류정보를확인가능컴파일러가제출한소스코드를컴파일하지못한경우채점결과를클릭하여상세한오류정보를확인가능 2) 문제목록페이지에표시되는결과 Ÿ Ÿ Ÿ Ÿ Ÿ Name - 문제이름이명시되어있으며, 클릭하면해당문제를풀어볼수있음 Submit - 본인이제출한횟수 My Score - 해당문제의 submission중최고점을표시 Start/End - 해당문제의제출가능시간, 마감시간 Status - 해당문제의전체제출현황을볼수있음 - 5 -
4. 시험모드 1) 시험모드로설정된메뉴는 Click this button to start 버튼으로시험을시작할수있음 2) Click this button to start 버튼클릭 - 시험시작시간이되지않았거나, 마감시간이지난경우, 시험시작불가능 - 시험이시작되면, 시험이종료될때까지시험외의다른메뉴사용이불가능 나머지사용법은 2. 과목선택및코드제출과동일 - 6 -
2 부. 채점방식 아래에서사용된예제문제는 OJ 시스템의 "OJ 연습문제 " 에등록되어있음 1. 점수산정방식 1) 채점과정 Ÿ 제출한소스코드를서버에서컴파일하여프로그램생성 Ÿ 채점자가미리준비한입력데이터를사용하여프로그램실행 Ÿ 채점자가미리준비한출력데이터와프로그램의출력을비교 2) 문제별로채점자가미리준비한여러개의테스트데이터에대해올바른결과를내는비율로점수산정 Ÿ 대체적으로테스트데이터는총 10개 - 채점결과가 70% 로나왔다면 10개의테스트데이터중 7개는맞고 3개는틀린것 예시문제 ) 정수 1 개를입력받고, 그수의절댓값을출력하는프로그램을작성하시오. 제출코드예시 ) c언어 int n; scanf("%d", &n); printf("%d", n); n = input() print(n) 테스트데이터예시 ) 입력데이터 1 입력데이터 2 입력데이터 3 입력데이터 4-3 -5 2-7 출력데이터1 출력데이터2 출력데이터3 출력데이터4 3 5 2 7 ------------------------------------------------------------------------------------------------------- 프로그램결과 ) -3-5 2-7 -> 4 개의테스트데이터중 1 개 (3 번째데이터 ) 만정답이므로, 위코드의점수는 (1/4)*100 = 25 점이됨 - 7 -
2. 입출력순서 Ÿ 문제에서제시되는입력순서와출력순서각각은반드시지켜야하지만, 입력과출력이서로섞이는것은상관없다. 예시문제 ) 한자리양의정수를두개입력받아, 입력받은정수를해당수만큼각각한줄에 출력하라. - 예시입력 - - 예시출력 - 2 22 4 4444 아래두경우모두정답 ( 실제출력모습 ) ( A ) ( B ) 위프로그램의코드 ( 모두정답 ) c언어 (A) int main(){ int a, b,i; scanf("%d %d", &a, &b); for (i = 0; i < a; i++) printf("%d", a); printf("\n"); for (i = 0; i < b; i++) printf("%d", b); printf("\n"); (A) a = input() b = input() print(str(a) * int(a)) print(str(b) * int(b)) c언어 (B) int main(){ int a, i, j; for (i = 0; i < 2; i++){ scanf("%d", &a); for (j = 0; j < a; j++) printf("%d", a); printf("\n"); (B) a = input() print(str(a) * int(a)) b = input() print(str(b) * int(b)) - 8 -
3. 오답처리되는코드예시 Ÿ 본 OJ 시스템에서는공백등을명세대로출력하지않으면오답처리된다. 예시문제 ) 양의정수 N 을입력받은후, N 개의각행에 Hello Sejong! 을출력하는프로그램을 작성하시오. - 예시입력 - - 예시출력 - 2 Hello Sejong! Hello Sejong! - 정답코드예시 - 채점결과 : Accept C언어 int n, i; scanf("%d",&n); printf("hello Sejong!\n"); n = input() for i in range(int(n)): print("hello Sejong!") - 오답코드예시 - 1) 출력해야할것이외의정보를출력 -> 채점결과 : Wrong Answer C언어 int n,i; printf("input : "); scanf("%d", &n); printf("hello Sejong!\n"); n = input("input : ") for i in range(int(n)): print("hello Sejong!") - 9 -
2) S 를소문자로출력하였음 -> 채점결과 : Wrong Answer C언어 int n,i; scanf("%d", &n); printf("hello sejong!\n"); n = input() for i in range(int(n)): print("hello sejong!") 3) 개행문자가없어한줄에다출력 -> 채점결과 : Wrong Answer C언어 int n,i; scanf("%d", &n); printf("hello Sejong!"); n = input() for i in range(int(n)): print("hello Sejong!",end='') 4) 문자열끝에불필요한공백삽입 ( 는공백을의미 ) -> 채점결과 : Presentation Error C언어 int n,i; scanf("%d", &n); printf("hello Sejong! \n"); n = input() for i in range(int(n)): print("hello Sejong! ") - 10 -
5) 비표준함수사용 (scanf_s : MS 컴파일러에서만작동 ) -> 채점결과 : Compile Error C 언어 int n,i; scanf_s("%d", &n); printf("hello Sejong!\n"); 4. 주의및기타사항 1) 서버시스템에악영향을주는소스제출금지 - system 함수사용불가 (Wrong Answer 처리됨 ) - file read/write 사용불가 (Wrong Answer 처리됨 ) 2) 채점서버에서는 C 언어표준 (C99) 을준수하는 gcc 컴파일러사용 - OS : Linux Ubuntu 14.04 LTS - Compiler : gcc 4.8.4(C), g++ 4.8.4(C++), java-1.8.0_101(java), python3 3) 주의사항 Ÿ scanf_s(), strcpy_s(), itoa(), fflush() 등의비표준함수사용불가 (MS계열컴파일러에서만작동 ) Ÿ 변수의선언위치에제한을두지않음 Ÿ 동적배열사용가능 Ÿ MS계열컴파일러에서는변수를자동으로초기화해주는경우가있으나, 이는표준이아님. (OJ 시스템에서사용하는 gcc에서는자동초기화되지않음 ) - Visual Studio 에서잘동작하나, OJ시스템에서 0점을받는원인중하나 - 11 -