Baekjoon Online Judge (https://www.acmicpc.net/)


Baekjoon Online Judge 사이트는 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

알고리즘 실력 향상에 있어 정말 좋은 사이트입니다. 많은 문제들이 있어서 많이 풀어볼 수 있습니다.

10,000여개의 알고리즘 문제를 61가지 프로그래밍 언어로 채점받을 수 있는 사이트입니다.

프로그래밍 대회를 준비하는 목적 이외에도, 언어를 배우는 목적으로도 사용할 수 있습니다.

문제를 모아 놓을 수 있는 문제집, 프로그래밍 대회를 개최할 수 있는 대회, 학교나 사용자 순위를 볼 수 있는 랭킹, 다양한 정보를 수록하고 있는 위키, 질문과 답변이 오가는 게시판, 스터디 그룹을 만들어서 팀 스터디를 할 수 있는 그룹, 알고리즘이나 문제 풀이에 대한 글이 올라오는 블로그로 이루어져 있습니다.





알고리즘 온라인 저지


주어진 문제가 있고, 문제에 대한 답을 구하는 프로그램을 컴퓨터 과학에서 다루는 알고리즘을 사용하여 작성 후, 이를 제출하면 미리 준비된 테스트 데이터를 적용하여 자동으로 채점하는 시스템 또는 사이트를 뜻한다. ACM ICPC, 정보올림피아드 등과 같이 유명한 프로그래밍 대회에서 출제되는 문제와 유사한 문제를 다루므로, 그러한 대회들을 준비하는 데에 많이 활용된다. 온라인 저지 사이트에서 자체적으로 프로그래밍 대회를 진행하는 일도 있다.


온라인 저지에서 제공하는 문제를 풀기 위해서는 기본적으로 익숙하게 구사할 수 있을 정도로 잘 아는 프로그래밍 언어가 있어야 하고, 알고리즘에 대한 기본 지식과 함께 문제를 분석하여 수학적으로 모델링하고 최적화 할 수 있는 능력이 요구된다. 여기에 자료구조에 대한 지식도 있다면 더욱 좋다.


온라인 저지 문제의 정답에 해당하는 풀이법은 보통 단 한가지만 존재하지 않으며, 문제에 주어진 실행 제한 시간 안에 작성한 프로그램이 입력받은 테스트 입력 데이터에 의해 출력한 결과 데이터가 채점용 정답 데이터와 일치하면 모두 정답이다. 따라서 사용할 수 있는 모든 방법을 동원하여 프로그램을 작성하면 된다. 사용 가능한 메모리 제한이 있는 경우가 많으며, 사용하는 언어에 따라 시간 제한이 다를 수도 있다. 각 언어별로 실행 속도가 다르기 때문으로, 최적의 알고리즘을 사용한다면 풀릴 정도로 주는 게 정상.


또한 성공한 프로그램의 경우는 다른 사람들의 코드와 비교하는 기능을 제공하는 경우가 많다. 랭크를 매길 경우 보통 실행 시간, 사용 메모리, 프로그램의 길이 등을 기준으로 한다. 길이를 극단적으로 줄인 코드를 보면 경이로울 정도.


이 문서는 알고리즘 문제 풀이를 공부하거나 ACM ICPC, 정보올림피아드 등의 프로그래밍 대회를 준비하는 사람들을 위해 도움이 되는 온라인 저지 사이트 목록(특히 국내 사이트)를 정리하기 위해 생성되었다.