Skip to content

Latest commit

 

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔍 BOJ Problem Curator



백준(BOJ) 문제 추천 및 커스텀 검색 API 서버

Solved.ac API를 활용하여 사용자가 설정한 조건에 맞는 알고리즘 문제를 선별해 주는 백엔드 서비스입니다.

📖 프로젝트 소개

알고리즘 문제 풀이를 즐기는 개발자로서, 기존의 랜덤 디펜스 서비스들이 제공하지 않는 상세한 필터링 기능에 대한 갈증을 느껴 시작한 프로젝트입니다.

단순히 난이도 범위 내의 무작위 문제를 추천받는 방식은 푼 사람 수가 극소수인 마이너한 문제, 번역이 없는 다국어 문제가 추천되는 등 학습 효율을 떨어뜨리는 경우가 많았습니다.

상세한 필터링 기능을 적용해서 원하는 바운더리 내의 문제를 랜덤으로 제공하는 서비스입니다.

🚀 주요 기능

  • 조건별 문제 검색: 알고리즘 분류, 난이도 범위, 최소 풀이 수 등 다양한 조건을 조합하여 검색 가능.
  • 한국어 문제 필터링: 다국어 문제 중 한국어 지문이 제공되는 문제만 선별.
  • 풀었던 문제 제외: 사용자의 백준 ID를 입력받아, 이미 해결한 문제는 결과 목록에서 자동으로 제외.
  • Solved.ac API 연동: 외부 API의 검색 쿼리 문법에 맞춘 요청 생성 및 응답 데이터의 객체 매핑 처리.

🛠 기술 스택

Category Technology
Language Java 21
Framework Spring Boot 3.2.0
Build Tool Gradle (Kotlin DSL)
Testing JUnit 5, AssertJ, Mockito
Utils Jackson, Lombok
Infrastructure Docker, AWS EC2 (Ubuntu 22.04)

📝 API 사용법

문제 검색 API

Request: GET /api/search

Parameter Type Required Description Example
tag String No 알고리즘 태그 (영문) dp, bfs, dp,greedy
minTier String No 최소 난이도 g5, s1
maxTier String No 최대 난이도 g1, p5
solvedCount Integer No 최소 푼 사람 수 1000
isKorean Integer No 한국어 문제 여부 (1: True) 1
userId String No 제외할 사용자 ID gleaming9
count Integer No 반환할 문제 개수 (Default: 1) 10

💡 사용 예시 (Examples)

DP 태그가 붙은 문제 1개 추천

GET /api/search?tag=dp

골드 5 ~ 골드 1 사이의 수학 문제 3개 추천

GET /api/search?tag=math&minTier=g5&maxTier=g1&count=3

플래티넘 1 이하의 수학 문제 3개 추천

GET /api/search?tag=math&maxTier=p1&count=3

한국어 지문이 있고, 1000명 이상이 푼 검증된 문제 1개 추천

GET /api/search?isKorean=1&solvedCount=1000

사용자(gleaming9)가 이미 푼 문제는 제외하고 추천

GET /api/search?tag=greedy&userId=gleaming9

DP, Greedy 태그가 동시에 붙었으며 사용자(gleaming9)가 이미 푼 문제는 제외하고 실버 5 ~ 골드 1 사이의 100명 이상이 푼 한국어 문제 2개 추천

GET /api/search?tag=dp,greedy&userId=gleaming9&minTier=s5&maxTier=g1&solvedCount=100&isKorean=1&count=2

Response (JSON):

[
    {
        "problemId": 2839,
        "titleKo": "설탕 배달",
        "level": 7,
        "tierName": "Silver 4",
        "acceptedUserCount": 112542,
        "url": "https://www.acmicpc.net/problem/2839",
        "tags": [
            { "key": "dp" },
            { "key": "math" }
        ]
    }
]

🐳 설치 및 실행

1. Docker로 실행

Docker가 설치되어 있다면 한 줄의 명령어로 서버를 실행할 수 있습니다.

docker run -p 8080:8080 gleam9/boj-problem-curator

2. 소스 코드로 실행

git clone https://github.com/gleaming9/BOJ_Problem_Curator.git
cd BOJ_Problem_Curator
./gradlew bootRun

About

우테코 오픈미션

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages