BOJ
1. 개요
1. 개요
Baekjoon Online Judge(BOJ)는 대한민국의 알고리즘 트레이닝을 위한 온라인 저지 사이트이다. 2010년 3월 19일 최백준(아이디: baekjoon)에 의해 설립되었으며, 현재는 스타트링크가 소유하고 있다. 주 목적은 프로그래밍 문제 풀이를 통해 컴퓨터 과학의 핵심인 알고리즘 설계 및 구현 능력을 기르는 것이다.
사이트는 방대한 문제은행과 자동화된 채점 시스템을 중심으로 운영된다. 사용자는 다양한 난이도의 문제를 선택해 코드를 제출하면, 시스템이 사전 정의된 테스트 데이터를 이용해 정확성, 실행 시간, 메모리 사용량 등을 평가한다. 이는 정보올림피아드나 ICPC와 같은 프로그래밍 대회를 준비하거나, 코딩 테스트 연습에 널리 활용된다.
BOJ는 국내 최대 규모의 알고리즘 문제 보유 사이트로, 한국어로 제공되는 문제가 많아 접근성이 높은 것이 특징이다. 또한 C++부터 Python, Java 등 일반적인 언어는 물론, BrainFuck과 같은 난해한 프로그래밍 언어까지 포함해 매우 다양한 프로그래밍 언어를 지원한다. 문제 풀이 외에도 게시판, 문제집, 그룹 기능 등을 통해 활발한 온라인 커뮤니티가 형성되어 있다.
2. 역사
2. 역사
백준 온라인 저지는 2010년 3월 19일, 최백준 (아이디: baekjoon)에 의해 설립되었다. 초기에는 개인적인 알고리즘 학습과 연습을 위한 온라인 저지 플랫폼으로 출발했으나, 국내 프로그래밍 대회 준비생과 컴퓨터 과학 학습자들 사이에서 빠르게 인기를 얻으며 성장했다.
사이트 운영은 이후 스타트링크가 인수하여 담당하게 되었다. 설립 이후 꾸준히 문제 수와 기능을 확장하여, 방대한 알고리즘 문제은행을 갖춘 국내 대표적인 코딩 연습 사이트로 자리 잡았다. 특히 한국정보올림피아드나 ICPC와 같은 주요 대회의 기출 문제를 체계적으로 수록하여 대회 준비에 필수적인 자원이 되었다.
시간이 지남에 따라 단순한 채점 시스템을 넘어 문제집 기능, 그룹 스터디, 게시판 커뮤니티 등 다양한 학습 도구를 추가하며 플랫폼으로서의 기능을 강화해 나갔다. 또한 solved.ac와의 연동을 통해 사용자들이 문제 난이도를 파악하고 자신의 실력을 체계적으로 관리할 수 있는 환경을 제공하게 되었다.
3. 주요 기능
3. 주요 기능
3.1. 문제은행 및 채점 시스템
3.1. 문제은행 및 채점 시스템
Baekjoon Online Judge의 핵심은 방대한 문제은행과 이를 실시간으로 평가하는 채점 시스템이다. 이 플랫폼은 알고리즘 학습과 프로그래밍 대회 준비를 목표로 하는 사용자에게 약 3만 3천 개 이상의 다양한 난이도의 문제를 제공한다. 사용자는 문제를 읽고 자신의 코드를 제출하면, 서버는 제출된 코드를 컴파일하고 미리 준비된 수많은 테스트 케이스에 대해 실행하여 정확성, 실행 시간, 메모리 사용량 등을 검증한다.
채점 결과는 '맞았습니다', '틀렸습니다', '시간 초과', '메모리 초과', '런타임 에러' 등으로 구체적으로 표시되어 사용자가 자신의 코드 문제점을 파악하는 데 도움을 준다. 또한 스페셜 저지, 서브태스크, 부분 점수와 같은 다양한 채점 방식을 지원하여 답이 유일하지 않은 문제나 점진적인 평가가 필요한 문제도 출제할 수 있다. 이 시스템은 ICPC나 한국정보올림피아드 등 주요 프로그래밍 대회의 기출 문제를 포함하고 있어 실전 대비에 매우 유용하다.
3.2. 지원 프로그래밍 언어
3.2. 지원 프로그래밍 언어
백준 온라인 저지는 알고리즘 문제 해결을 위해 매우 다양한 프로그래밍 언어를 지원하는 것이 큰 특징이다. C, C++, 자바, 파이썬 등 대중적인 언어는 물론, 브레인퍽, 화이트스페이스, 아희와 같은 난해한 프로그래밍 언어까지 제출이 가능하다. 이는 단순히 문제 풀이뿐만 아니라 새로운 언어를 학습하거나 특정 언어의 문법을 익히는 목적으로도 사이트를 활용할 수 있게 한다.
지원 언어는 버전별로 세분화되어 제공된다. 예를 들어, C++의 경우 C++98부터 C++26까지 여러 표준 버전이, 파이썬은 파이썬 2와 파이썬 3 및 각각의 파이파이 구현체가 별도의 언어 옵션으로 존재한다. 자바 역시 자바 8, 자바 11 등 다양한 버전을 선택할 수 있다. 이외에도 고, 러스트, 코틀린, 스위프트, R, 하스켈 등 현대적인 언어부터 포트란, 코볼, 알골 같은 레거시 언어까지 폭넓게 포함되어 있다.
일부 문제는 언어 제한이 걸려 있어 특정 언어로만 제출해야 하거나, 반대로 텍스트와 같은 언어로만 풀 수 있도록 출제되기도 한다. 이러한 다양성은 사용자에게 폭넓은 선택지를 제공하지만, 채점 서버의 환경과 메모리 제한은 언어별로 차이가 있을 수 있어 주의가 필요하다. 결과적으로 백준 온라인 저지는 단순한 알고리즘 트레이닝 장소를 넘어, 수십 가지 프로그래밍 언어를 실험해볼 수 있는 독특한 플랫폼 역할을 하고 있다.
3.3. 문제집 및 그룹 기능
3.3. 문제집 및 그룹 기능
백준 온라인 저지에서는 사용자가 직접 문제집을 생성하거나 다른 사용자가 만든 문제집을 활용할 수 있다. 이 기능을 통해 특정 알고리즘 주제를 집중적으로 연습하거나, 특정 대회의 기출 문제를 모아 학습하는 등 체계적인 학습 계획을 세울 수 있다. 문제집은 공개 또는 비공개로 설정할 수 있으며, 비공개 문제집은 주로 개인 학습이나 소규모 스터디 그룹 내에서 사용된다.
또한 그룹 기능을 통해 사용자들은 온라인 스터디 그룹을 형성할 수 있다. 그룹 내에서는 그룹 전용 문제집을 만들고 관리할 수 있으며, 그룹원들의 문제 풀이 현황을 확인하는 랭킹 시스템, 그룹 내 소통을 위한 게시판 등을 활용할 수 있다. 이 기능은 학교 동아리나 코딩 테스트 준비 스터디 등에서 활발히 이용된다.
3.4. 게시판 및 커뮤니티
3.4. 게시판 및 커뮤니티
백준 온라인 저지의 게시판 및 커뮤니티 기능은 사용자 간의 활발한 정보 교류와 학습을 돕는 중요한 공간이다. 사이트 내에는 다양한 목적의 게시판이 운영되고 있으며, 이를 통해 사용자들은 문제 풀이에 대한 질문과 답변을 주고받거나, 오류를 제보하고, 일반적인 정보를 공유할 수 있다.
주요 게시판으로는 문제 풀이에 대한 질문을 올리는 질문 게시판, 문제의 오타나 오역을 신고하는 오타/오역 게시판, 그리고 자유로운 주제로 대화를 나누는 자유 게시판 등이 있다. 특히 질문 게시판은 초보자부터 고수까지 다양한 실력의 사용자들이 모여 특정 문제의 해결 방법이나 알고리즘에 대해 토론하는 장으로 활발히 이용된다. 이를 통해 사용자는 혼자 해결하기 어려운 문제에 대한 힌트나 새로운 접근법을 얻을 수 있다.
과거에는 슬랙 워크스페이스를 운영하여 실시간 채팅 형태의 커뮤니티를 제공하기도 했다. 이곳에서는 다양한 주제 채널을 통해 즉각적인 대화가 가능했으나, 2021년 2월을 끝으로 서비스가 종료되었다. 이외에도 사용자들이 스터디 그룹을 만들어 활동할 수 있는 그룹 기능 내에도 게시판이 제공되어, 팀원 간의 소통과 자료 공유에 활용된다.
이러한 커뮤니티 공간은 방대한 문제 은행과 더불어 백준 온라인 저지의 가장 큰 장점 중 하나로 꼽힌다. 다른 사용자의 코드를 참고하거나 피드백을 받을 수 있어 자기 주도 학습에 큰 도움이 되며, 특히 한국어로 된 활발한 커뮤니티는 국내 사용자들에게 매우 유용한 학습 환경을 제공한다.
4. solved.ac 연동
4. solved.ac 연동
solved.ac는 백준 온라인 저지의 문제들에 난이도를 부여하고, 사용자의 실력을 레이팅으로 평가하는 연동 서비스이다. 이 서비스는 BOJ의 가장 큰 단점 중 하나였던 문제 난이도의 불명확함을 해소하는 데 크게 기여했다. 기존에는 문제 번호 순서나 정답 비율만으로 난이도를 가늠하기 어려웠지만, solved.ac는 커뮤니티 기반의 투표 시스템을 통해 각 문제에 브론즈부터 루비까지의 티어를 부여하여 사용자가 자신의 수준에 맞는 문제를 쉽게 선택할 수 있도록 돕는다.
사용자는 solved.ac 웹사이트나 크롬 확장 프로그램을 통해 BOJ 문제 페이지에서 직접 해당 문제의 난이도 티어와 세부 태그를 확인할 수 있다. 또한 solved.ac는 사용자가 푼 문제를 기반으로 개인 레이팅과 CLASS를 계산하여 제공하며, 이를 통해 다른 사용자들과의 실력 비교가 가능하다. 이 레이팅 시스템은 코딩 테스트 준비나 알고리즘 대회를 위한 목표 설정에 유용하게 활용된다.
solved.ac는 BOJ와 별도의 운영 주체를 가지고 있지만, 데이터는 실시간으로 연동된다. 주요 기능으로는 문제 필터링, 사용자 통계, 개인화된 문제 추천, 그리고 그룹 기능 등이 있다. 특히 'CLASS' 시스템은 난이도별로 엄선된 문제들을 단계별로 제공하여 체계적인 학습 로드맵을 제시한다. 이처럼 solved.ac는 방대한 BOJ 문제 은행을 효과적으로 탐색하고 관리할 수 있는 핵심 도구로 자리 잡았다.
5. 장점
5. 장점
5.1. 방대한 문제 수와 한국어 지원
5.1. 방대한 문제 수와 한국어 지원
BOJ의 가장 큰 장점은 방대한 문제 수와 한국어 지원이다. [정보 테이블 확정 사실]에 따르면, 총 문제 수는 33,052개에 달하며, 이는 국내외 알고리즘 트레이닝 사이트 중에서도 최상위 수준이다. 이는 ICPC나 한국정보올림피아드와 같은 주요 프로그래밍 대회의 기출 문제부터 다양한 알고리즘 학습용 문제까지 폭넓게 포함하고 있어, 초보자부터 전문가까지 모든 수준의 이용자에게 풍부한 학습 자원을 제공한다.
또한 BOJ는 해외 사이트의 수많은 문제들을 적극적으로 한국어로 번역하여 제공한다. 이는 영어 등 외국어로 된 문제에 대한 진입 장벽을 크게 낮추어, 국내 프로그래머와 알고리즘 학습자들이 보다 쉽게 접근하고 집중할 수 있도록 돕는다. 문제 지문, 입력 출력 조건, 예제 등이 상세히 번역되어 있어, 언어적 이해 부담 없이 순수한 문제 해결 능력과 논리적 사고에만 집중할 수 있는 환경을 조성한다.
이러한 방대한 한국어 문제 은행은 코딩 테스트를 준비하는 구직자나 컴퓨터 과학을 전공하는 학생들에게 특히 유용하다. 블로그나 유튜브 등지에서도 BOJ 문제 번호를 기준으로 한 풀이와 강의가 활발히 공유되고 있어, 학습 생태계가 잘 구축되어 있다. 따라서 국내 알고리즘 학습 및 프로그래밍 실력 향상을 위한 최적의 플랫폼으로 자리매김하고 있다.
5.2. 다양한 프로그래밍 언어 지원
5.2. 다양한 프로그래밍 언어 지원
Baekjoon Online Judge는 C++, Python, Java, C와 같은 주류 프로그래밍 언어는 물론, 다양한 마이너 및 난해한 언어까지 총 50여 가지 이상의 언어로 문제를 제출하고 채점받을 수 있다. 이는 다른 주요 프로그래밍 대회 플랫폼에 비해 매우 폭넓은 지원 범위에 해당한다.
지원 언어 목록에는 Brainfuck, Whitespace, 아희와 같은 난해한 프로그래밍 언어부터 Rust, Go, Kotlin 같은 현대적 언어, 그리고 Fortran, COBOL, Pascal 같은 레거시 언어까지 포함되어 있다. 또한 Minecraft나 Coq와 같이 특정 문제에서만 제출 가능한 언어도 존재한다. 이러한 다양성은 사용자가 알고리즘을 익히는 동시에 새로운 언어를 학습하거나 특정 언어의 숙련도를 높이는 데 활용될 수 있다.
주요 언어들은 여러 버전으로 세분화되어 지원된다. 예를 들어, C++는 C++98부터 C++26까지, Python은 Python 2와 Python 3 버전이 각각 제공된다. 이는 사용자가 다양한 개발 환경이나 대회 규정에 맞춰 코드를 작성하고 테스트하는 데 도움을 준다. 다만, 모든 언어가 모든 문제에서 사용 가능한 것은 아니며, 일부 문제는 특정 언어로의 제출만을 허용하거나 제한하기도 한다.
이처럼 광범위한 언어 지원은 Baekjoon Online Judge를 단순한 알고리즘 연습장을 넘어 다양한 프로그래밍 언어를 실험하고 익힐 수 있는 플랫폼으로 자리매김하게 하는 특징 중 하나이다.
6. 단점 및 주의사항
6. 단점 및 주의사항
6.1. 문제 번호와 난이도 불일치
6.1. 문제 번호와 난이도 불일치
백준 온라인 저지의 문제 번호는 단순히 문제가 추가된 순서를 나타낼 뿐, 문제의 난이도와는 전혀 연관이 없다. 이는 초보자가 흔히 빠지는 함정으로, 번호 순서대로 문제를 풀다가 예상치 못한 고난이도 문제에 갑자기 부딪히는 경우가 많다. 대표적인 예로 1000번대 초반에 위치한 1005번(ACM Craft)이나 1006번(습격자 초라기) 문제는 다이나믹 프로그래밍과 위상 정렬 등 상당한 알고리즘 지식을 요구하는 난이도 높은 문제들이다.
따라서 학습을 목표로 하는 사용자, 특히 초보자는 번호 순서보다는 '단계별로 풀어보기'와 같은 공식 가이드나, solved.ac에서 제공하는 난이도 체계를 따라 문제를 선정하는 것이 바람직하다. 이 서비스들은 문제를 주제별 또는 난이도별로 분류하여 체계적인 학습 경로를 제공한다. 문제 번호와 실제 난이도의 불일치는 백준이 방대한 문제은행을 시간 순으로 축적해 온 역사적 특성에서 비롯된 현상이다.
6.2. 데이터 오류 및 치터 처리 문제
6.2. 데이터 오류 및 치터 처리 문제
BOJ는 방대한 문제 수와 다양한 기능을 제공하는 장점이 있지만, 데이터 오류와 치터 처리 문제는 지속적으로 지적받는 단점이다.
일부 문제에는 데이터 오류나 오역이 존재한다. 테스트 케이스가 잘못 구성되었거나, 문제 지문이 원문과 다르게 번역되어 풀이에 혼란을 주는 경우가 있다. 이러한 오류를 발견한 사용자는 오타/오역 게시판에 제보할 수 있으나, 운영진의 인력 부족으로 인해 수정 요청이 매우 느리게 처리되거나 처리되지 않는 경우가 많다. 이는 사용자 경험을 저해하는 요인으로 작용한다.
치팅(다른 사용자의 코드를 복사하여 제출하는 행위)에 대한 처리도 미흡한 편이다. BOJ 이용 규칙에 따르면 치팅 적발 시 제출 삭제 및 일정 기간 제출 금지 등의 제재를 가하지만, 자동화된 감시 시스템이 부재하여 신고에 의존하고 있다. 이로 인해 신고 처리까지의 시간이 길고, 실제 제재가 이루어졌는지 사용자에게 피드백이 명확히 제공되지 않는 경우가 많다. solved.ac와 같은 연동 서비스에서는 별도의 제재 시스템을 운영하고 있으나, 본 서비스인 BOJ 내에서의 처리는 여전히 개선이 필요한 부분이다.
이러한 문제들은 온라인 저지로서의 신뢰성과 공정성을 훼손할 수 있다. 사용자는 문제를 풀 때 공식 게시판의 데이터 추가 요청이나 오류 제보 내역을 참고하는 것이 도움이 될 수 있으며, 치팅 행위는 학습에 도움이 되지 않을 뿐만 아니라 계정 정지 등의 불이익을 초래할 수 있으므로 주의해야 한다.
7. 사건 사고
7. 사건 사고
백준 온라인 저지 운영 과정에서 몇 차례 서버 장애와 운영상의 사건이 발생했다. 2019년 숭고한 알고리즘 캠프에서는 대회 시작 직전 운영자 최백준의 연락 두절로 시작 시간이 1시간 25분 가량 지연되는 사고가 있었다. 같은 해와 2020년에 열린 UCPC에서는 대회 중 서버가 다운되는 문제가 반복되어 공식 사과문이 게시되기도 했다.
2020년 중앙대학교 프로그래밍 경진대회에서는 데이터베이스 서버의 용량이 가득 차 서버 장애가 발생했으며, 이후 자동 용량 조정 기능이 도입되었다. 2025년 2월에는 광범위한 채점 시스템 장애가 발생하여 대부분의 제출이 비정상적인 채점 결과를 받았고, 일부 대회의 공정성이 훼손되는 상황이 벌어지기도 했다.
커뮤니티 측면에서는 2015년부터 운영되던 공식 Slack 채널이 2021년 2월 내부 논란과 규칙 위반 관련 분쟁 끝에 갑작스럽게 폐쇄된 사건도 있다. 이 외에도 대규모 코딩 테스트나 ICPC 예선 등이 백준 플랫폼에서 진행될 때 간헐적인 접속 불안정 현상이 보고되곤 한다.
8. 활용 팁
8. 활용 팁
8.1. 초심자 학습 가이드
8.1. 초심자 학습 가이드
초심자가 Baekjoon Online Judge를 효과적으로 활용하기 위해서는 체계적인 접근이 필요하다. 가장 중요한 것은 문제 번호 순서대로 풀려고 하는 함정을 피하는 것이다. 문제 번호는 등록 순서를 의미할 뿐 난이도와 무관하며, 초반부터 고난도 문제가 배치되어 있어 진입 장벽이 될 수 있다.
따라서 학습의 첫걸음은 백준 공식의 '단계별로 풀어보기' 카테고리를 이용하는 것이다. 이는 기초 입출력, 조건문, 반복문부터 시작해 점진적으로 알고리즘과 자료 구조를 익힐 수 있도록 구성된 길잡이 역할을 한다. 또한, 다른 유저들이 만든 '초심자 문제집'을 활용하거나, solved.ac의 'CLASS' 시스템을 따라가는 것도 좋은 방법이다. CLASS는 난이도별로 엄선된 문제들을 제공하여 체계적인 성장을 도와준다.
문제를 풀 때 너무 오랜 시간 고민만 하기보다는, 적절한 선에서 다른 사람의 풀이 아이디어를 참고하는 것도 학습의 일부이다. 단, 소스 코드를 그대로 복사하여 제출하는 치팅은 절대 금지되며, 실력 향상에 도움이 되지 않는다. 이해가 안 되는 부분은 게시판을 활용해 질문하거나, 관련 블로그 및 유튜브 강의를 찾아보는 것이 좋다. 꾸준한 반복 학습과 함께 이러한 리소스를 적극 활용하는 것이 초심자 학습의 핵심이다.
8.2. 문제 선정 방법
8.2. 문제 선정 방법
문제 선정은 알고리즘 학습의 효율을 높이는 핵심 요소이다. Baekjoon Online Judge에는 3만 개가 넘는 문제가 있어, 학습 목표와 실력에 맞는 문제를 선택하는 것이 중요하다. 초보자는 문제 번호 순서대로 풀기보다, 사이트가 제공하는 체계적인 분류 기능을 활용하는 것이 좋다.
가장 대표적인 방법은 백준 공식의 '단계별로 풀어보기'를 이용하는 것이다. 이는 알고리즘 주제별로 난이도 순으로 문제를 모아놓은 공식 가이드로, 초보자부터 고급 학습자까지 단계적으로 공부할 수 있다. 또한 유저들이 만든 '문제집' 기능을 통해 특정 주제나 난이도에 맞춘 문제 목록을 활용할 수 있으며, '그룹' 기능을 통해 스터디원들과 함께 추천 문제를 풀 수도 있다.
난이도 기반 선정을 위해서는 solved.ac 서비스의 'CLASS'와 '레벨' 기능을 적극 활용하는 것이 효과적이다. CLASS는 1부터 10까지의 등급으로, 각 등급마다 핵심적인 문제들이 엄선되어 있어 체계적인 실력 향상에 도움이 된다. '레벨'은 브론즈부터 루비까지 세분화된 난이도 체계로, 자신의 현재 수준에 맞는 문제를 고를 수 있다. 일반적인 코딩 테스트 대비에는 실버와 골드 난이도의 문제 풀이가 중점을 이룬다.
