백준 온라인 저지

From Hidden Wiki
Jump to navigation Jump to search

[include(틀:다른 뜻1, other1=일본은행(Bank Of Japan), rd1=일본은행)]

[include(틀:프로젝트 문서,프로젝트=나무위키 정보과학 프로젝트)]

[include(틀:알고리즘 트레이닝 사이트)]

||<-2><:><bgcolor=#5D5D5D>

{{{#FFFFFF Baekjoon Online Judge(BOJ)}}} || ||<-2><:><bgcolor=#FFFFFF> width=300 || ||<:><bgcolor=#5D5D5D> {{{#white 국가}}} ||<:> 대한민국 || ||<:><bgcolor=#5D5D5D> {{{#white 사이트 목적}}} ||<:> 알고리즘 트레이닝 || ||<:><bgcolor=#5D5D5D> {{{#white 소유자}}} ||<:> [[1]] || ||<:><bgcolor=#5D5D5D> {{{#white 설립일}}} ||<:> 2010년3월 19일 || ||<:><bgcolor=#5D5D5D> {{{#white 회원수}}} ||<:> 92,406명 [* 2018년 6월 6일 오전 9시 34분 기준] || ||<:><bgcolor=#5D5D5D> {{{#white 총 제출 횟수}}} ||<:> 9,756,667회 [* 2018년 8월 15일 오전 3시 33분 기준] || ||<:><bgcolor=#5D5D5D> {{{#white 총 문제수}}} ||<:> 14,988개 [* 2018년 8월 15일 오전 3시 33분 기준] || ||<:><bgcolor=#5D5D5D> {{{#white 링크}}} ||<:> [[2]] || [목차]

개요

2010년 최백준씨[* 현재 스타트링크라는 코딩 교육 스타트업의 대표로, BOJ의 관리도 해당 스타트업으로 넘어갔다. 하지만 여전히 절대 다수의 관리가 최백준씨에 의해서 이루어진다.] (ID: baekjoon) 에 의해 개설된 알고리즘 트레이닝 사이트.

우리나라의 정보과학 알고리즘 트레이닝 사이트 중 하나이다. 가장 큰 특징으로는 문제가 아주 많으며 [* 14482 문제면 전세계에서도 1위 수준이다. 저것보다 문제가 많은 OJ들은 대부분 문제 관리가 거의 안되어서 데이터가 틀리는 일도 간혹 있다는 (...) 점을 감안하면 매우 놀라운 개수.], C, JAVA, Python 등의 네임드 프로그래밍 언어는 물론, BrainFuck, Whitespace, 아희[* 아희 전용 대회도 열린 적이 있다!] 등의 --변태적인-- 언어들까지 컴파일러를 지원한다는 것이다. 다양한 언어의 지원과 단계별, 알고리즘별 문제 분류 및 대회 기출 문제들까지 정리되어 있어 한국정보올림피아드를 준비하거나 알고리즘을 공부하는 프로그래머들에게 많은 도움이 된다.

문제 리스트 말고도 질문/문제 추천/자유 등 주제의 게시판, 사이트 문제를 기반으로 유저들이 만든 문제집, 같은 과나 지인들끼리 만들 수 있는 그룹, 강의, 심지어 개인 블로그 기능까지 개발되어 있어 모르는 문제를 물어보거나, 새로운 지식을 얻거나, 자신이 배운 것들을 정리할 수도 있다.

문제 번호가 난이도를 뜻하지 않으므로 이에 주의해야 한다. 특히 문제 순서대로 풀 경우, 습격자 초라기라는 초심자용 함정에 갇히게 된다.

여담으로 약빤 문제들이 의외로 많이 있다. 특히 유저들 사이에서는 [문제](구구)와 [문제](정ㅋ벅ㅋ)가 가장 유명하다. 다른 문제로는 [문제](占쏙옙)도 있다.

2016년 11월 11일에는 빼빼로데이 기념으로 빼빼로데이라는 문제에서 그 문제를 11월 11일에 해결하면 빼빼로를 랜덤으로 추첨해서 주었다. [* 오전 11시 11분 또는 오후 11시 11분에 해결하면 빼빼로 3개를 주고, 오전 11시 11분 11초 또는 오후 11시 11분 11초에 해결하면 빼빼로 5개를 줬다. 사실 추첨 없이 [[3]]에게 주었고, [있는 사람]에게도 주었다.]

2018년 9월 3일에는 채점 수 천만 기념으로 아이디 변경 이벤트를 진행한다.

--BaekjoonOJ의 맨 뒤 세글자를 딴 noj.am 으로도 접속 가능하다.-- [* boj.kr 로도 접속이 가능하다.] --노잼--

채점 결과

* {{{#CCCCCC 기다리는 중}}}: 채점이 밀려서 아직 채점이 되지 않은 경우.
* {{{#CCCCCC 재채점을 기다리는 중}}}: 재채점을 기다리는 중인 경우.
* {{{#E67E22 컴파일 하는 중}}}: 컴파일 하는 중인 경우.
* {{{#E67E22 채점중}}}: 채점을 하는 중인 경우.
* {{{#009F6B 맞았습니다!!}}}: 제출한 프로그램이 모든 테스트 케이스를 통과했을 경우. 즉, 정답이다.
* {{{#E74C3C 출력 형식이 잘못되었습니다}}}: 출력 결과는 정답과 유사하나, 공백, 빈 줄과 같은 문제로 인해서 출력 결과가 일치하지 않은 경우.
* {{{#E74C3C 틀렸습니다}}}: 출력 결과가 정답과 다른 경우.
* {{{#E74C3C 시간 초과}}}: 프로그램이 제한된 시간 이내에 끝나지 않은 경우. 이런 경우에는 채점을 중간에 중단하므로 정답이 맞는지 아닌지는 알 수 없다.
* {{{#E74C3C 메모리 초과}}}: 프로그램이 허용된 메모리보다 많은 메모리를 사용했을 경우.
* {{{#E74C3C 출력 초과}}}: 너무 많은 출력이 발생하는 경우. 주로 프로그램이 무한 루프에 빠졌을 때 발생한다. 출력 제한은 1MB.
* {{{#4765A0 런타임 에러}}}: 실행 도중에 'segmentation fault', 'floating point exception', 'used forbidden functions', 'tried to access forbidden memories' 등의 에러가 발생하여 프로그램이 종료된 경우.
* {{{#4765A0 컴파일 에러}}}: 컴파일 하지 못한 경우. Warning Message는 에러 메시지가 아니다. 채점 결과를 클릭하면 컴파일 에러 메시지를 볼 수 있다..

{{{#009F6B 맞았습니다!!}}}(내지는 부분 점수)를 제외한 어떤 최종 채점 결과도 정답 처리가 되지 않는다. 물론 그 원인은 사용자가 잘못된 코드를 짜서이니, 제발 그거 갖고 게시판에다가 따지지 말자(...) --맞았는데 왜 틀려요--[* 줄임말 맞왜틀. 자매품으로 틀렸는데 왜 맞아요(틀왜맞)도 있다...]

장점

한글화

알고리즘 문제들은 대부분 영어로 주어지는 경우가 많은데, BOJ는 많은 문제들을 번역하여 제공하며, 사용자가 직접 번역에 참여할 수도 있다. 실제 대회를 준비하려면 영어가 필수적이지만, 최근 프로그래밍을 공부하면서 알고리즘 문제에 관심을 갖는 사람들이 많아졌고, 대회를 위해서 뿐만 아니라 취미로 문제를 푸는 사람들도 많기 때문에 많이 이용되고 있다.

다양한 언어

ACM-ICPC와 같은 대회에서는 C, C++, JAVA 정도의 언어만 사용할 수 있으나, BOJ에서는 63가지[* 2018년 8월 20일 기준] 언어로 제출할 수 있다. --BigInteger는 그냥 Python으로 내자.-- 예를 들면 BrainFuck으로 Hello, world!를 제출해볼 수도 있다.

오프라인 강의

사이트 관리자이자 스타트링크 대표인 최백준씨가 직접 오프라인에서 알고리즘 문제 풀이 강연을 하고, 방학에는 코딩 캠프를 주최한다.

Slack

단체 톡방으로 Slack을 이용한다. 위치는 [[4]]이며, 홈페이지의 안내에 따라 초대장을 받아 들어갈 수 있다. BOJ에서 활동중인 다수[* 일부 유저의 경우 개인 이모지가 존재한다.]의 유저들이 이야기를 나누며, 문제에 관한 것들 뿐만 아니라 IT 전반에 관한 것들도 자주 이야기되므로 활동을 시작했다면 가입하는 것도 좋다.

빠른 채점 속도

2018년 3월 9일, 채점서버가 새로운 채첨서버로 업데이트 되면서 채점이 매우 빨라졌다! 원래의 채점속도와는 비교가 안될 정도로 내자마자 결과가 뜨는 상황을 볼 수 있다.

--예전 : 뚝.뚝.뚝.뚝... 현재 : 슈루루루루룩!--

단점

잘못된 번역

문제가 잘못 번역되어 문제 풀이에 어려움을 주거나, 가끔은 아예 반대로 번역되어 원문을 읽지 않으면 풀 수 없는 경우가 있다. 이런 문제를 발견하면 바로 게시판을 통해 제보하자.

잘못된 입력 형식

간혹 테스트케이스의 입력 형식이 일정하지 않은 경우가 있다. 문제에서는 두 줄에 걸쳐 들어온다고 한 값들이 한 줄에 들어오거나 하는 것이 그 예이다. C/C++과 같은 언어는 상관이 없으나 Python과 같은 언어를 사용할 경우 입력 형식이 중요하기 때문에 입력값을 제대로 읽지 못해 오답을 내는 경우가 있다. 틀려도 어떤 입력과 출력으로 틀렸는지 알 수 없기 때문에, 이를 확인하려면 입력 형식이 이상하게 들어오는 경우 조건문을 걸고, 루프 안에서 0으로 나누거나 무한루프를 만들어 런타임 에러를 발생시켜보면 알 수 있다. 이런 문제를 발견하면 바로 게시판을 통해 제보하자.

문제 난이도 분류

문제들이 난이도 별로 분류되어 있지 않다. 기능이 있긴 하지만 단순히 입출력과 조건문/반복문을 연습하는 정도이고, 문제들이 각각 어느 정도의 난이도인지 알아볼 방법이 없다. 때문에 많이 풀린 문제가 계속해서 점점 더 많이 풀리는 경향이 있다.

심지어 순전히 문제 난이도와 상관없이 운빨로 풀어야만 하는 문제도 있다. [이런거][* 심지어 이 문제는 단순히 채점 프로그램이 정답으로 생각하는 값만 나오면 무조건 맞게 하는 시스템이라, 랜덤변수같은걸 생성할 필요가 없이 메모장에 그 숫자만 입력해서 제출해도 정답으로 처리된다. ~~물론 그거도 운빨이지만~~]

부족한 알고리즘 분류

아직 알고리즘 분류가 되지 않은 문제들이 많고, 간혹 잘못 분류되는 경우도 있다. 물론, 여러 방법으로 풀 수 있지만 아예 다른 알고리즘이 적혀있는 경우가 왕왕 있다. 틀린 것이 확실하다 싶으면 오타 제보하는 게시판에 수정 신청을 하자.

적절한 문제 선택

앞서 기술한 대로 문제의 난이도가 책정되어 있지 않고, 가능하더라도 난이도는 상당히 주관적일 수 있기에 유저 스스로가 적절한 문제를 선정해 풀어야 한다. 이에는 다음과 같은 방법이 있다.

* 정답자 수, 제출 수, 정답률: 가장 좋은 지표이다. 정답자 수가 많을수록 쉬운 문제이다. 정답률의 경우 낮으면서도 문제는 쉽거나 높으면서도 문제는 어려운 경우가 많은데, 전자의 경우는 한두 번 문제의 함정에 걸리거나 예외 처리를 잘못하는 등 구현 문제로 틀릴 수 있으나 결국 맞히는 데는 별 문제가 없는 난이도는 낮은 문제이고, 후자의 경우는 문제 자체가 어려워서 손을 댄 사람이 적은 경우 자주 볼 수 있다. 실제로 이런 경우엔 제출자 수부터 현저히 떨어진다.
* 문제집: 유저들이 자유롭게 생성할 수 있는 문제집 중에서 초심자 전용 문제집이 많이 존재한다. 좋은 문제들을 많이 모아놓은 문제집이 많으므로 애용하면 좋다. 문제 수가 아주 적지도 않으면서 문제집 클리어 수가 많으면 대체로 쉽다고 판단할 수 있다. 클리어 수가 적더라도 대부분의 문제가 쉬운 경우가 있으므로 꼭 들어가보자.
* 내가 못 푼 문제들: 전체 문제들 중에서 내가 아직 풀지 않은 문제를 정답자 수 등의 기준으로 정렬하여 보여준다. 상단에 위치할수록 대체로 쉬운 문제이다.

사건 사고

BAKEJOON

모 기사에서 BAEKJOON ONLINE JUDGE의 철자를 틀려 BAKEJOON ONLINE JUDGE라고 표기한 적이 있는데, 이 때문에 아직도 베이크준이라고 부르거나 빵굽는 사이트라고 이야기하는 경우가 있다. 이 외에도 BACKJOON 등 다양한 바리에이션이 있으나 베이크준이 가장 널리 알려져 있다.

오픈 소스

* ~~[[5]] 에서 자동 제출 프로그램을 다운로드할 수 있다.~~[* 문제가 발생해 차단되었다[[6]]]
* [[7]] 에서 자신의 정답 코드를 자동으로 다운로드해주는 프로그램을 다운로드할 수 있다.
* [[8]] 난이도 별로 문제를 추천해주고 티어를 계산해주는 사이트
* [[9]] 백준 전적 검색 사이트
* [Your Problem Solving] C++ 코드를 이미지로 바꿔주거나 BOJ, AtCoder 등의 궤짝을 볼 수 있다. --2018년 2월 26일에 운영자의 실수로 서버가 날아간 적이 있었다.--

분류:알고리즘 트레이닝 사이트