K
KRYFT Problem Bank
백엔드 보통 코딩

API Rate Limiter

토큰 버킷 알고리즘으로 API 속도 제한

30분
80점
#3714

문제 설명

API Rate Limiting을 위한 토큰 버킷(Token Bucket) 알고리즘을 구현하세요.

토큰 버킷 알고리즘

  • 버킷에 일정 용량의 토큰 보관
  • 일정 속도로 토큰 보충
  • 요청 시 토큰 소비, 토큰 없으면 거부

요구사항

  • 사용자별 독립적인 버킷
  • 분산 환경 고려 (Redis 기반)
  • 버킷 용량, 보충 속도 설정 가능
  • 남은 토큰 수, 리셋 시간 반환

인터페이스


class RateLimiter:
    def __init__(capacity, refill_rate):
        # capacity: 최대 토큰 수
        # refill_rate: 초당 보충 토큰 수

    def allow(user_id) -> RateLimitResult:
        # allowed: bool
        # remaining: int (남은 토큰)
        # reset_at: timestamp (다음 토큰 보충 시간)

평가 기준

  • 알고리즘 정확성
  • 동시성 처리
  • 시간 계산 정밀도
실행 버튼을 눌러 코드를 실행하세요.