CodeUp

 


'''CodeUp
코드업'''

[image]
'''국가'''
대한민국
'''사이트 목적'''
알고리즘 트레이닝
'''소유자'''
개인(admin)[1]
'''설립일'''
2012년 5월 12일
'''회원수'''
151,878명[2]
'''총 제출 횟수'''
13,214,461회[3]
'''링크'''
홈페이지
1. 개요
2. 시스템 사양 및 컴파일러
3. 채점 결과
4. 문제 분류
5. 사이트 관리
5.1. 운영
5.2. 업데이트 현황
5.3. CodeUp 2.0

[clearfix]

1. 개요


정보과학 의 기초, 심화 및 한국정보올림피아드 대비 등의 정보과학 예제를 풀어볼 수 있는 알고리즘 트레이닝 사이트.
원래는 경남정보고등학교 학생들을 위한 사이트였으나[4], 점점 외부인 유입이 늘어나더니 사이트가 커지면서 학교나 신분에 상관 없이 정보과학 알고리즘 트레이닝을 할 수 있는 곳으로 성장했다. CodeUp은 한국정보올림피아드 대비 외에도 프로그래밍 초보자가 프로그래밍 입문을 쉽게 할 수 있도록 도와준다. 사이트에 수행평가 기능이 있다 보니, 정보 과목이 있는 다른 학교에서 CodeUp을 이용해서 수행평가를 보거나 수업을 하는 경우가 많다. CodeUp을 학교 수업 및 수행평가, 또는 동아리 운영 목적으로 사용하려는 정보 선생님들은 2017년 02월 17일부터 교사 권한 신청을 통해 정보 수업 진행에 필요한 권한을 얻을 수 있게 되었다. 본 사이트로 수업을 하는 학교들이 많아지면서 사이트 트래픽이 거의 한계에 다다라 교사 권한 신청을 받지 않았던 때가 있었는데, 최근 서버를 업그레이드 하면서부터 다시 신청을 할 수 있게 되었다.
2019년 08월 29일 오전 2시 기준으로 '''총 1357문제'''[5]를 열람할 수 있는데, 모종의 이유로 가려진 문제들도 있는 관계로 이들까지 포함하면 전체 1440문제가량 있을 것으로 추정된다. 가려진 문제들로는 대표적으로 1000번대의 1009번[6], 1104번[7], 1105번, 1522번[8], 2000번대의 2201번, 2202번, 2404번과 5000번대의 5097번 등이 있으며 그 외에 5100번대와 6000번대에도 가려진 문제들이 다수 존재한다. 또한 어떤 문제가 수행평가로 정해지면 그 문제는 문제 리스트에서 사라지고 열람이 불가능해지기 때문에, 가끔씩 열람 가능한 문제 수에 변동이 있을 수 있다. 문제들의 기본적인 형식은 문제 설명과 입력, 출력 형식을 읽고 문제를 해결할 수 있는 코드를 제출하여 OJ 시스템을 통해 채점받는 것으로, 대부분의 문제들이 이와 같은 형식을 가진다. 이 외에도 코드 작성 시에 특정 키워드를 사용할 수 없는 문제들도 있고, 또 몇몇 문제는 코드 전체를 작성하는 것이 아니라 특정 함수 부분만 작성해서 제출하는 문제들도 있다.
이벤트성 문제나 약빤 문제들도 가끔가다 보인다. 1104번 스승의 은혜라든가[9] 1105번 프로그래밍의 신이라든가 2404번 404 Not Found라든가[10] [11]. 참고로 이런 문제들의 답을 유출하는 유저들이 가끔씩 있는데, 이런 짓을 하는 순간 블랙리스트에 올라 제명되고 문제가 비공개로 전환될 수 있으니 하지 말기를 바란다.
또한 스페셜 저지(Special Judge, 줄여서 SPJ라고도 한다)라는 것이 있는데, 스페셜 저지는 정답이 여러 가지인 문제[12]나 입력이 없이 출력만 하는 문제, 테스트 케이스가 하나만 있는 문제[13] 등에 사용된다. 그런데 스페셜 저지 문제는 스페셜 저지를 위한 파일 비교 소스가 특별히 필요하기 때문에, 아직 스페셜 저지가 적용되지 않은 스페셜 저지 문제들이 있다.[14]
2016년경부터 엄청난 성장세를 보이더니 현재까지도 빠른 속도로 성장하고 있는데, 2012년 사이트 시작 이후 벌써 '''제출횟수 1200만 회를 넘기고 가입자 수는 14만 명을 넘었다'''.[15] 그래서 아주 가끔씩 트래픽이 폭주하는 경우가 발생하기도 한다.
통계는 여기 또는 여기[16]에서 확인할 수 있다.
2018년 4월 25일 중국발 디도스 공격으로 서버가 마비되는 사건이 생겼다. 다행히 서버는 재개되었지만, 서버가 끊기거나 이상한 현상이 생길 수 있다는 운영자의 공지가 있었다.
2019년 5월 12일을 기준으로 코드업이 7주년을 맞았다.

2. 시스템 사양 및 컴파일러


  • CPU : Intel(R) Core i5 - 8th Gen CPU @ 3.2GHzx4
  • 메모리 : 8GB
  • HDD : 240GB SSD
  • 운영체제 : ubuntu 16.04.5 LTS
  • 주요 컴파일러 : C/C++ - GNU GCC/G++, Java - SUN_JAVA_JDK, Python - Python 3.5
원래 Pascal, Bash, PHP, Perl, C##의 언어의 제출을 2013년 9월부터 허용했었으나, 보안 문제로 2016년 4월 21일부터 제출을 막았다.

3. 채점 결과


  • 대기 중 : 채점이 밀려서 아직 채점이 완료 되지 않은 상태
  • 재채점 중 : 테스트 데이터를 다시 고친 경우, 해당 제출 코드를 다시 채점한 경우
  • 컴파일 중 : 채점을 하기 위해 컴파일 하는 상태
  • 채점 중 : 채점이 진행되고 있는 상태[17]
  • 정확한 풀이 : 제출한 코드가 모든 테스트 케이스를 통과한 경우
  • 표현 에러 : 출력 결과가 테스트 케이스와 유사하나, 공백, 빈 줄과 같은 사소한 문제로 인해 출력 결과가 일치하지 않는 경우
  • 잘못된 풀이 : 출력 결과가 테스트 케이스와 다른 경우[18]
  • 시간 초과 : 제출한 코드가 제한된 시간 이내에 끝나지 않은 경우
  • 메모리 초과 : 제출한 코드가 허용된 메모리보다 많은 메모리를 사용한 경우[19]
  • 출력한계 초과 : 예상하는 출력보다 많은 출력이 발생한 경우
  • 실행 중 에러 : 세그먼트 에러, 부동 소수점 에러 등과 같은 에러가 발생한 경우[20]
  • 컴파일 에러 : 컴파일러가 제출 코드를 컴파일 하지 못한 경우[21]

4. 문제 분류


'''번호'''
'''구분'''
'''비고'''
<^|1> 1001 ~
<^|1>기초 문제
<^|1>1001 ~ : 기초100제
1101 ~ : 입출력문
1151 ~ : if~else
1251 ~ : for
1351 ~ : 다중 for
1401 ~ : 1차원 배열
1501 ~ : 2차원 배열
1601 ~ : 함수
1701 ~ : 수행평가 및 쉬운 수준의 대회
1901 ~ : 재귀함수
<^|1> 2001 ~
<^|1>중급 문제
<^|1>약간의 문제해결력이 필요한 문제
<^|1> 3001 ~
<^|1>자료구조,
알고리즘,
문제해결전략
<^|1>3001 ~ : 탐색 및 정렬, 기본 알고리즘
3101 ~ : 기본 자료구조(STL : stack, queue, list, vector, set, map 등)
3201 ~ : 트리 & 그래프 등
3301 ~ : 욕심쟁이 기법(Greedy)
3401 ~ : DFS, BFS, 백트래킹, 분할정복 등
3701 ~ : Dynamic Programming
<^|1>4001 ~
<^|1>국내대회
<^|1>4001 ~ : 교원컴퓨터프로그래밍 경진대회 기출문제
4201 ~ : 정보올림피아드(KOI) 기출문제(지역본선, 전국본선)
<^|1>5001 ~
<^|1>해외대회
<^|1>USACO(USA Computing Olympiad)
CCC(Canadian Computing Olympiad) Junior, Senior 부문 문제들
<^|1>6001 ~
<^|1>파이썬 기초 100제
<^|1>파이썬 기초 100제. 2021년 2월 20일 이후 기존에 숨겨 두었던 6000번대 문제들은 다른 번호로 변경하였고, 다시는 열람이 불가하다.

5. 사이트 관리



5.1. 운영


운영은 관리자(ID: admin) 한 사람이 혼자 도맡아 하고 있다. 그런데 이 admin이 교사인지라 바빠서 24시간 내내 사이트 관리가 어렵다 보니, 게시판에 가끔씩 영 좋지 않은 글들이 올라온다. 그리고 이런 글들이 올라오는 빈도는 2018년이 되면서 더 늘어났다. 보통 이런 상황이 발생한 경우 관리자가 해당 글을 삭제하고 그 글을 쓴 사용자의 글 작성 권한을 제한하는 등의 조치를 취하고 있기는 하지만, 아무래도 어그로성 유저들이 꽤 있다 보니 이런 상황을 근절하기가 힘들다. 게시판에 이상한 글이 보이면 즉시 관리자에게 제보하자.
이 와중에 몇몇 몰상식한 사용자들이 코드업 내의 쪽지 기능을 부적절하게 사용한 탓에, 결국 2018년 1월 24일부터 100문제 이하로 푼 사람들은 쪽지 기능을 사용할 수 없게 되었다.
2018년 2월 21일부로 100문제 이하로 푼 사람들은 게시판 글 작성이 금지되었다.[22] 다음은 이 상황에 대한 관리자의 말이다.

최근 게시판에 불필요한 장난과 도배, 분위기를 흐리는 댓글이 난무하고 있습니다.

해당 사용자는 보이는 대로 차단하고 있었으나, 새로운 아이디를 또 만들어 작성하는 폐해가 있습니다.

이에 100문제 이하 글 작성 금지로 변경합니다.

초보자분들이 질문할 곳이 없어 답답해지겠지만, 100문제는 거의 기초 문제이니 책이나 인터넷 검색을 통해 해결하시기 바랍니다. 또는 이전의 질문들을 잘 보시면 거의 도움을 받으실 수 있을 것입니다. 선의의 피해를 보시는 사용자 분들께 정말 죄송합니다.

2019년 9월 28일부터는 500문제 이상 해결한 사람들만 강의를 작성할 수 있도록 했다.

개인 강의가 변질되어 가고 있습니다.

다음 2가지 주의를 부탁드리고, 그에 따른 조치를 취하도록 하겠습니다.

1. 강의 내용없는 단순 문제 모음 글을 쓰지 마세요.(예: 쉬운 문제 모음 / 카우시리즈 모음 등)

► 발견 즉시 글을 삭제하고, 해당 사용자는 게시판 글 작성을 금지하도록 하겠습니다.(게시판 및 개인 강의 글 작성 모두 금지)

2. 단순 대답형 댓글은 쓰지 마세요.(예: 네 / 알겠습니다 / 올 솔브 / 2개 풀었어요 등)

► 지속적으로 이런 글이 많이 보이는 경우 해당 사용자는 게시판 글 작성을 금지하도록 하겠습니다.(게시판 및 개인 강의 글 작성 모두 금지)

관리자의 수고를 조금이라도 덜어주고 싶다면 사이트에서 절대 장난치지 말도록 하자. 많은 사람들이 사용하는 공간에서 장난을 치는 행위는 관리자에게도 피해를 주지만, 올바르게 사용하던 사용자들에게까지 피해를 주는 행동이다. CodeUp은 정보과학 공부를 하기 위한 곳이지 장난을 치는 놀이터가 아니다. CodeUp은 자기만을 위한 사이트가 아니라 몇만 명이 같이 사용하는 곳이라는 점을 꼭 기억하자.
영구 게시판 관리자 (2018.09.01 ~ ) [23]
gbshs161101
kimgihong38
tlsdydaud1
2020년 8월 27일부터 블라인드 처리의 종류가 일반과 악성으로 나뉘었고, 악성 블라인드 처리를 당한 글이 5개 이상 있는 사용자는 게시판에 글을 쓸 수 없도록 바뀌었다. 악성 블라인드 처리를 당한 글은 자신이 직접 삭제할 수 없다. 또한 프로필에서 자신의 글 중 악성 블라인드 처리를 당한 글이 몇 개나 되는지 확인할 수 있게 되었다.

5.2. 업데이트 현황


CodeUp이 2018년 1월 1일, 새해를 맞아 모바일에서도 편하게 볼 수 있도록 모바일 반응형 웹 레이아웃이 적용되었다.
2018년 2월 13일부터 사용자 정보 페이지의 레이아웃이 예전과 다르게 변경되었다. 변경된 점은 크게 다음의 다섯 가지로 볼 수 있다.
  • 글씨 크기가 약간 더 작아졌다.
  • 소속이 비공개 처리되었다.[24]
  • 제출 통계와 해결한 문제 목록의 위치가 뒤바뀌었다.
  • 아이디 옆에 레벨이 추가되었다.[25]
  • 아이디 글씨 크기가 일정 크기까지 점차 커진다.[26]
또한 2018년 2월 14일부터 푼 문제 개수에 따라 아이디 색상이 달라졌다. 푼 문제 개수별 색상 및 그에 해당되는 사용자 수는 다음과 같다.[27]
'''해결한 문제 수'''
'''색상'''
'''해당 사용자 수'''[28]
1000문제 이상
'''검''''''빨간색'''[29]
21명[30]
900문제 이상
'''빨간색'''
19명[31]
800문제 이상
'''주황색'''
36명
700문제 이상
'''보라색'''
50명
600문제 이상
'''파란색'''
118명
500문제 이상
'''청록색'''
217명[32]
400문제 이상
'''초록색'''
541명
300문제 이상
'''연두색'''
1271명
200문제 이상
'''황토색'''
3516명
100문제 이상
'''갈록색'''
11046명
50문제 이상
'''검은색'''
25746명
50문제 미만
'''회색'''
127904명
위쪽으로 올라갈수록 해당 사용자들의 수가 적어진다. 원래는 검빨강 아이디를 가진 사용자가 한 명도 없었으나, 2019년 8월 18일 기준으로 검빨강 아이디가 12개가 되었다. 한편 2019년 2월경부터 전체 순위 페이지 로딩 속도를 빠르게 하기 위해, 전체 순위에서 모든 사용자 목록을 보여주지 않고 상위 5000명만 보여준다.[33] 이는 2018년 5월 20일 기준으로 전체의 4.5퍼센트에 해당한다.
2018년 5월 25일부터 문제 페이지에서 내 소스 보기가 가능해졌다![34]
또한 2019년 봄에는 게시판의 열람 가능 범위가 2페이지까지로 제한되었다.[35]

5.3. CodeUp 2.0


2018년 12월 15일, CodeUp이 이전까지 오랫동안 사용하던 낙후된 서버 대신 새로운 서버로 교체하면서 CodeUp 2.0 버전이 되었다! 해당 공지 CodeUp이 CodeUp 2.0으로 바뀌면서 새롭게 추가/변경된 점이 몇 개 보인다.
  • 사이트 대문의 URL주소가 http://www.codeup.kr/JudgeOnline/index.php[36]에서 http://www.codeup.kr/index.php로 바뀌었다.[37][38]
  • Python2 버전은 이제 제출 불가능하고, 소스 제출 페이지에서 제출 언어를 Python으로 선택하면 Python3 버전으로 채점된다.
  • 기존 서버보다 속도가 대폭 빨라졌다.
  • 라이벌 기능이 추가되었다. [내 정보]의 [나의 라이벌]에서 볼 수 있다.[39]
  • 소스 제출 화면에 자동 완성 기능이 추가되었다.
  • 수업/개인 강의 제목 검색을 할 수 있게 되었다.
  • 2404번 404 Not Found 문제가 서버 상황과 맞지 않아 열람할 수 없게 되었다.[40]

[1] 현재 창원과학고등학교 정보 교사이다. 사이트가 해킹시도를 당했을시 학교로 공문이 간다고 하여 지금은 개인 소유중인 상황. [2] 2020년 5월 20일 오후 10시 53분 기준[3] 2020년 5월 20일 오후 10시 53분 기준[4] 관리자가 원래 경남정보고 선생님이었다.[5] 1000번대 486문제, 2000번대 205문제, 3000번대 178문제, 4000번대 378문제, 5000번대 110문제[6] 단순히 코드를 출력하는 것이라 이 문제 역시 초보자들의 흥미를 떨어뜨릴 수 있어 가려졌다. 문제를 보고 싶다면 여기를 보면 된다.[7] 후술하겠지만 스승의 날 한정 이벤트 문제이다.[8] 테스트 케이스에 오류가 너무 많은 관계로 가려졌다.[9] 스승의 날 기념 이벤트 문제로, 항시 접근가능한 것이 아니라 매년 스승의 날인 5월 15일부터 '''단 일주일 동안'''만 열람 가능하기 때문에 이 기간 동안에만 코드 제출을 할 수 있다. [10] 현재 2404번 문제는 사이트가 개편되면서 풀 수 없게 되었다.[11] 일부 유저의 분탕질로 1105번과 함께 비공개로 전환되었다.[12] 대표적인 예시로 이 문제가 있다. 참고로 해당 문제는 사이트 내의 문제 중 가장 처음으로 SPJ가 적용된 문제이다.[13] 일부러 틀려서 정답을 보는 경우를 방지하기 위함이다.[14] 정답률이 0%인 스페셜 저지 문제들이 대부분 그런 류이다.[15] 하지만 사이트가 성장함에 따라 관심종자들의 유입 또한 늘어나게 되어 게시판이 더러워지는 등의 단점도 생겨났다.[16] 현재 개발자가 활동을 자주 하지 못하는 것으로 추정된다.[17] 기존에는 테스트케이스가 없는 문제에 소스코드를 제출할 경우 이 상태에서 더이상 진행이 되지 않는 버그가 있었다. 현재는 테스트케이스가 없는 문제에 제출을 할 수 없도록 패치되어 이 문제점은 사라졌다.[18] 참고로 '잘못된 풀이'가 떴을 경우 어떤 입력 데이터에서 틀렸는지를 알려 준다. 해당 테스트 케이스의 입력과 정답, 그리고 내가 출력한 답을 최대 1024바이트까지 보여준다. CodeUp의 특별한 점이자 장점이라고도 할 수 있는 부분. 그래서 자신의 코드가 어디에서 틀렸는지 찾는 것이 비교적 용이하다. 하지만 스페셜 저지의 경우 오류 정보를 보여주지 않는다.[19] 단, 메모리를 '조금' 초과했을 경우에만 이 에러가 뜬다. 메모리를 아주 많이 초과하게 되면 메모리 초과가 아니라 실행 중 에러로 나오게 된다.[20] 여담으로 게시판에 올라오는 에러 질문들 중 실행 중 에러에 대한 질문들이 아주 많다. Segmantation Fault가 떴다면 배열 크기를 좀 더 크게 잡아보거나 배열 인덱스에 음수가 들어가는지 확인해 보고, Floating Point Exception이 떴다면 0으로 나누는 경우가 있는지를 확인해 봐야 한다. 대부분의 실행 중 에러는 이를 통해 해결할 수 있다.[21] '컴파일 에러'를 클릭하면 코드에 대한 에러 메시지가 나오기 때문에 이를 잘 읽어보면 어떤 부분에서 컴파일 오류가 발생했는지를 알 수 있다. 제출 언어를 잘못 선택해서 컴파일 에러가 나는 경우도 꽤 많다.[22] 원래는 20문제가 기준이었다.[23] 원래는 1년이라는 임기가 있었으나 이 사용자들에게 게시판 관리를 계속 맡기겠다는 관리자의 의견에 따라 영구 관리자로 지정되었다. 추후 게시판 관리자들이 스스로 그만두겠다는 의사를 표할 경우 충원하게 된다. kkm0476이라는 유저도 게시판 관리자였지만, CodeUp에서의 활동을 줄인 탓에 영구 관리자 대상에서는 제외되었다.[24] 원래는 Email만 비공개 처리되어 있었다. 소속이 비공개 처리된 이유는 불명.[25] 레벨은 자신이 푼 문제 개수를 10으로 나눈 몫이다. 원래는 100으로 나눈 몫이었으나 레벨 간격이 너무 컸는지 이와 같이 바뀌었다. 레벨은 어디 쓰이는 것은 아니고 그냥 장식용이다.[26] 이것은 2018년 2월 22일부터 적용되었다. 하지만 이것 때문에 프로필 로딩 속도가 느려져서 결국 이 기능은 다시 사라졌다.[27] 이 색상들은 CodeForces의 Rating별 색상 순서와 동일하다. 단 50~399문제에 해당하는 색상은 codeforces의 Rating 색이 아니다.[28] 2020년 9월 7일 14시 40분 기준.[29] '''c''''''odeup'''처럼 맨 앞의 한 글자만 검은색이고 뒤의 글자들은 모두 빨간색이다. 또한, 알고리즘 관련 커뮤니티에서는 누텔라라고 불린다.[30] 1200문제 이상이 3명, 1100~1199문제가 3명, 1000~1099문제가 15명이다.[31] 관리자 계정 admin이 제외되어 있다.[32] 모범소스 계정 solution이 제외되어 있다.[33] 물론 전체 순위 페이지에서 안 보인다 뿐이지, 링크를 이용하면 5000등 이후의 등수 현황도 볼 수 있다. http://www.codeup.kr/ranklist.php?start=(등수) 형식으로 입력하면 (등수 + 1)등부터 (등수 + 50)등까지 보여준다.[34] 한 이용자의 건의사항을 일주일 만에 적용시킨 운영자 갓갓..[35] 이것의 목적은 오래된 글들을 찾아서 댓글을 다는 것(끌올)을 방지하려는 것이다.[36] 현재 이 주소로 들어가게 되면 "즐겨찾기 주소를 변경하시기 바랍니다."라는 알림이 뜨며 바뀐 주소로 리다이렉트 된다.[37] 물론 여전히 codeup.kr로 접속 가능하다.[38] 후술하겠지만 HTTPS가 적용되어 https://www.codeup.kr/index.php로 다시 바뀌었다.[39] 나의 라이벌은 최대 3명까지 등록할 수 있으며, 사용자 정보 페이지에서 자신을 라이벌로 등록한 사람의 수를 볼 수 있다. 다만 누가 자신을 라이벌로 등록했는지는 알 수 없다.[40] 이 사실이 이 문제의 답에 대한 힌트이기도 하다.